在 2x geom_col 的图中将具有相同填充变量的值彼此相邻绘制
Plot values with same fill-variable next to each other in a plot with 2x geom_col
我有一个数据集,我想在条形图中绘制。它由一个 x 变量、两个显示百分比的 y 变量和一个赋予变量不同特征的变量(如 A、B 和 C)组成。同一 x 处的所有 y 变量之和为 100%。
我已经为数据框构建了一个示例:
x <- c(0,0,0,50,50,50,100,100,100)
y1 <- c(40,30,5,60,10,5,65,5,5)
y2 <- c(10,10,5,10,10,5,10,10,5)
AB <- c('B','A','C','B','A','C','B','A','C')
test <- data.frame(x,y1,y2,AB)
我想构建一个图来显示不同 x 值的百分比,对比 y1 和 y2 中的值。我能够将其全部放在一个图中,以透明方式显示 y1:
p <- ggplot(test,aes(x=x, group=x)) +
geom_col(aes(y=y1,fill=AB)) +
geom_col(aes(y=y2,fill=AB)) +
scale_fill_manual(values = alpha(c("darkred","darkgreen","blue"),0.6)) +
coord_flip()
p
现在我想重新排列图中的值,例如 A、B 或 C 的正常值和透明值彼此相邻。我想比较透明值和非透明值(y1 和 y2)的比例以及不同特征(A、B、C)的比例,这只有在所有值例如A是挨着的。
是否可以将两个 gem_col
的值相互混合?我不知道该怎么做,也找不到任何解决方案。
我想这就是您要找的。可以在这里找到另一个答案:
x <- c(0,0,0,50,50,50,100,100,100)
y1 <- c(40,30,5,60,10,5,65,5,5)
y2 <- c(10,10,5,10,10,5,10,10,5)
AB <- c('B','A','C','B','A','C','B','A','C')
test <- data.frame(x,y1,y2,AB)
barwidth = 20
ggplot(test) +
geom_bar(mapping = aes(x = x - barwidth/2, y= y1, fill = AB),
stat = "identity",
position = "stack",
width = barwidth)+
geom_bar(mapping = aes(x = x + barwidth/2 + 1, y= y2, fill = AB),
stat = "identity",
position = "stack",
width = barwidth)+
scale_x_continuous(breaks = c(0,50,100))+
scale_fill_manual(values = alpha(c("darkred","darkgreen","blue"),0.6)) +
coord_flip()+
labs(x = "x")+
theme_minimal()
我有一个数据集,我想在条形图中绘制。它由一个 x 变量、两个显示百分比的 y 变量和一个赋予变量不同特征的变量(如 A、B 和 C)组成。同一 x 处的所有 y 变量之和为 100%。
我已经为数据框构建了一个示例:
x <- c(0,0,0,50,50,50,100,100,100)
y1 <- c(40,30,5,60,10,5,65,5,5)
y2 <- c(10,10,5,10,10,5,10,10,5)
AB <- c('B','A','C','B','A','C','B','A','C')
test <- data.frame(x,y1,y2,AB)
我想构建一个图来显示不同 x 值的百分比,对比 y1 和 y2 中的值。我能够将其全部放在一个图中,以透明方式显示 y1:
p <- ggplot(test,aes(x=x, group=x)) +
geom_col(aes(y=y1,fill=AB)) +
geom_col(aes(y=y2,fill=AB)) +
scale_fill_manual(values = alpha(c("darkred","darkgreen","blue"),0.6)) +
coord_flip()
p
现在我想重新排列图中的值,例如 A、B 或 C 的正常值和透明值彼此相邻。我想比较透明值和非透明值(y1 和 y2)的比例以及不同特征(A、B、C)的比例,这只有在所有值例如A是挨着的。
是否可以将两个 gem_col
的值相互混合?我不知道该怎么做,也找不到任何解决方案。
我想这就是您要找的。可以在这里找到另一个答案:
x <- c(0,0,0,50,50,50,100,100,100)
y1 <- c(40,30,5,60,10,5,65,5,5)
y2 <- c(10,10,5,10,10,5,10,10,5)
AB <- c('B','A','C','B','A','C','B','A','C')
test <- data.frame(x,y1,y2,AB)
barwidth = 20
ggplot(test) +
geom_bar(mapping = aes(x = x - barwidth/2, y= y1, fill = AB),
stat = "identity",
position = "stack",
width = barwidth)+
geom_bar(mapping = aes(x = x + barwidth/2 + 1, y= y2, fill = AB),
stat = "identity",
position = "stack",
width = barwidth)+
scale_x_continuous(breaks = c(0,50,100))+
scale_fill_manual(values = alpha(c("darkred","darkgreen","blue"),0.6)) +
coord_flip()+
labs(x = "x")+
theme_minimal()