我正在使用 ggplot2 在一張圖中繪制多個向量。我有以下資料框
| 大批 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 到達1 | 0.1 | 0.1 | 0.1 | 0.2 | 0.2 | 0.2 | 0.7 | 0.7 | 0.4 | 0.7 |
| 到達2 | 0.6 | 0.6 | 0.6 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.5 | 0.1 |
| 到達3 | 0.3 | 0.3 | 0.3 | 0.7 | 0.7 | 0.7 | 0.2 | 0.2 | 0.1 | 0.2 |
| 到達4 | 0.4 | 0.6 | 0.7 | 0.2 | 0.1 | 0.3 | 0.4 | 0.5 | 0.3 | 0.9 |
| 乙 | 一種 | 一種 | 一種 | 乙 | 乙 | 乙 | 一種 | 一種 | 一種 | 乙 |
| C | 乙 | 乙 | 乙 | 一種 | 一種 | 乙 | 乙 | 一種 | 乙 | 一種 |
于是我將資料融化,用水平堆疊條繪制所有向量,如下:
df2<-df %>%
melt(id.vars = "Array") %>%
mutate(variable = str_extract(variable, "[0-9] ")) %>%
mutate(value = case_when(
value == "a" ~ 1,
value == "b" ~ 2,
TRUE ~ as.numeric(value)
)) %>%
mutate(variable = as.numeric(variable))
df2 %>%
ggplot(aes(x = Array, y = variable, group = Array, fill = value))
geom_col() coord_flip()
但是 x 軸不正確,影像顯示向量中的相同數量a和大小不同,最后一個元素的大小也比前三個大。在x軸上的問題是容易與矢量檢測然后。bBB and CArr
當您查看 df2variable只有 1 到 10 個時,我無法弄清楚 x 軸上有 50 個以上的點。

uj5u.com熱心網友回復:
這是因為每個條形都在堆疊 y(變數)。對于每個 Array 類別,條形從 1 到 10 堆疊,總數為 1 2 ... 10 = 55,這就是為什么您看到 x 軸超過 50。這也是 B 和 C 有的原因a 和 b 的大小不同。B 和 C 的第一個藍色塊是:(a, a, a) = (1 2 3) = 6 和 (b, b, b) = (1 2 3) = 6,它們有相同的尺寸。B 和 C 的第二個藍色塊是:(b, b ,b) = (4 5 6) = 15 和 (a, a) = (4 5) =9,它們有不同的大小。
如果您希望 x 軸的范圍在 1-10 之間,并且 B 和 C 的 a 和 b 大小相同。將您設定y (variable)為 1 的向量。
df2<-df %>%
melt(id.vars = "Array") %>%
mutate(value = case_when(
value == "a" ~ 1,
value == "b" ~ 2,
TRUE ~ as.numeric(value)
)) %>%
mutate(variable = 1) # change to 1
更新圖例:可用于scale_fill_continuous()自定義圖例文本。使用下面的代碼,您將獲得圖片中的圖例。
df2 %>%
ggplot(aes(x = Array, y = variable, group = Array, fill = value))
geom_col()
scale_fill_continuous(breaks = c(0.1, 1, 2), labels = c("0.1", "1 (=a)", "2 (=b)"))
coord_flip()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/341303.html
