在 ggplot2 中叠加条形图

15
我正在尝试在 ggplot2 中叠加条形图。
我的当前代码生成了一个条形图,但它们是堆叠在一起的。我不想要这样,我希望它们重叠,这样我就可以看到每个条形的高度差异。
代码:
```R ggplot(data = mydata, aes(x = my_x_var, y = my_y_var, fill = my_fill_var)) + geom_bar(stat = "identity") ```
library(ggplot2)
library(reshape)


x = c("Band 1", "Band 2", "Band 3")
y1 = c("1","2","3")
y2 = c("2","3","4")

to_plot <- data.frame(x=x,y1=y1,y2=y2)
melted<-melt(to_plot, id="x")

print(ggplot(melted,aes(x=x,y=value,fill=variable)) + geom_bar(stat="identity", alpha=.3))

堆叠的输出:

在此输入图像描述

1个回答

28

尝试在geom_bar调用中添加position = "identity"。你可以从?geom_bar看到默认的位置是stack,这就是你目前看到的行为。

这样做后,我得到:

print(ggplot(melted,aes(x=x,y=value,fill=variable)) + 
        geom_bar(stat="identity",position = "identity", alpha=.3))

输入图像描述

正如下面所注明的,也许使用position = "dodge"会是更好的替代方案:

输入图像描述


2
也许位置应该是 "dodge"? - Seth
@Seth 是的,那可能更好(并且会使图例更易于理解),我只是按照原帖作者似乎想要的去做。 - joran
太简单了,我简直不敢相信我错过了那个,谢谢。 - Harpal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接