我正在嘗試制作一個包含兩個分類變數的條形圖,其中一個是另一個的“超集”。我想用顏色顯示較小的,用線型顯示較大的。
我的問題是我希望線型在每個大類別中出現一次,而不是每種顏色出現一次。例如,在下圖中,我希望實線出現一次(圍繞紅色和綠色表面一起,而不將它們分開),而虛線出現一次(圍繞藍色和紫色表面一起)。
我將非常感謝任何幫助!

下面是重現附圖的代碼
library(tibble)
library(ggplot2)
set.seed(1234)
data <- runif(100)
cat_1 <- 1 * (data < 1/4) 2 * (data >= 1/4 & data < 1/2)
3 * (data >= 1/2 & data < 3/4) 4 * (data > 3/4)
cat_2 <- (cat_1 <= 2) * 1
df <- tibble(x = data,
cat_1 = factor(cat_1),
cat_2 = factor(cat_2))
ggplot(df, aes(x = "", fill = cat_1, linetype = cat_2, color = cat_2))
geom_bar()
scale_x_discrete(drop = FALSE)
scale_linetype_manual(values = c("dotted", "solid"))
scale_color_manual(values = c("black", "black"))
uj5u.com熱心網友回復:
您需要重新調整 cat2 以使其與 cat1 中的子集的順序相同,然后您可以使用第二個將其 alpha 設定為 0的group美學geom_bar
df <- tibble(x = data,
cat_1 = factor(cat_1),
cat_2 = factor(cat_2, c(1, 0)))
ggplot(df, aes(x = "", fill = cat_1))
geom_bar()
geom_bar(alpha = 0, aes(linetype = cat_2, group = cat_2),
color = "black", size = 1.5)
scale_x_discrete(drop = FALSE)
scale_linetype_manual(values = c("solid", "dotted"))
scale_color_manual(values = c("black", "black"))
theme_light(base_size = 16)
guides(fill = guide_legend(override.aes = list(colour = NA)))
theme(legend.key.size = unit(10, 'mm'))

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/483761.html
上一篇:使用ggplot繪制二項式GLM
