用geom_bar()覆盖两个条形图
我试着把两个条形图叠加在一起,而不是在旁边。 数据来自同一数据集。我希望x轴上有“块”和“开始”和“结束”作为重叠条形图用geom_bar()覆盖两个条形图,r,ggplot2,overlay,errorbar,R,Ggplot2,Overlay,Errorbar,我试着把两个条形图叠加在一起,而不是在旁边。 数据来自同一数据集。我希望x轴上有“块”和“开始”和“结束”作为重叠条形图 Block Start End 1 P1L 76.80 0.0 2 P1S 68.87 4.4 3 P2L 74.00 0.0 4 P2S 74.28 3.9 5 P3L 82.22 7.7 6 P3S 80.
Block Start End
1 P1L 76.80 0.0
2 P1S 68.87 4.4
3 P2L 74.00 0.0
4 P2S 74.28 3.9
5 P3L 82.22 7.7
6 P3S 80.82 17.9
我的剧本是
ggplot(data=NULL,aes(x=Block))+
geom_bar(data=my_data$Start,stat="identity",position ="identity",alpha=.3,fill='lightblue',color='lightblue4')+
geom_bar(data=my_data$End,stat="identity",position ="identity",alpha=.8,fill='pink',color='red')
我得到一个错误:ggplot2不知道如何处理numeric类的数据
我也试过了
ggplot(my_data,aes(x=Block,y=Start))+
geom_bar(data=my_data$End, stat="identity",position="identity",...)
有人知道我怎样才能做到吗?多谢各位
编辑:
如何获得道奇叠加条
我编辑这篇文章,因为我的下一个问题是相关的,因为它与我原来的文章相反
@梅克尔
我不得不把我的图改成四条,显示所有标有L和S的区块的平均值。L代表滨海,S代表滨海。他们接受两种治疗:正常和减少
我已经计算了平均值和它们的标准偏差。
我需要四个带各自误差条的条:
正常/沿岸,减少/沿岸,正常/近岸,减少/近岸
问题是,当我绘制它时,两个滨海沙洲和两个亚滨海沙洲相互重叠!所以现在我希望它们不要重叠!
我怎样才能做到?我试过各种各样的position='dodge'
和position=position\u dodge(newdata$Force)
,但运气不好
我的newdata
包含以下信息:
分带力N平均sd se
1 Litoral正常值60.0000000.0000000.000000
2 Litoral Redusert 6 5.873333 3.562868 1.454535
3局部正常6 7.280000 2.898903 1.183472
4下级编辑6 21.461667 4.153535 1.695674
我的剧本是这样的:
ggplot(data=cdata,aes(x=newdata$Force,y=newdata$mean))+
geom_bar(stat="identity",position ="dodge",
alpha=.4,fill='red', color='lightblue4',width = .6)+
geom_errorbar(aes(ymin=newdata$mean-sd,ymax=newdata$mean+sd),
width=.2, position=position_dodge(.9))
结果很不幸
至于误差条,显然有四条,但它们重叠。请问,我如何解决这个问题?如果您不需要图例,解决方案1可能适合您。它更简单,因为它使您的数据保持宽格式
如果需要一个传说,请考虑<强>解决方案2 <强>。它要求将数据从宽格式转换为长格式
解决方案1:无图例(保留宽格式) 您可以在各个几何图形的层次上完善您的美学规范(此处,geom\u bar
):
解决方案2:添加图例(转换为长格式)
要添加图例,请首先使用重塑2::melt
将数据帧从宽格式转换为长格式。
这给了你两个专栏
列(“开始”与“结束”)变量
- 以及
列值
变量
列定义图例:
library(reshape2)
my_data_long <- melt(my_data, id.vars = c("Block"))
ggplot(data=my_data_long, aes(x=Block, y=value, fill=variable, color=variable, alpha=variable)) +
geom_bar(stat="identity", position ="identity") +
scale_colour_manual(values=c("lightblue4", "red")) +
scale_fill_manual(values=c("lightblue", "pink")) +
scale_alpha_manual(values=c(.3, .8))
library(重塑2)
我的_数据_long哈哈,太简单了!非常感谢你!如果您需要在绘图旁边添加图例,请查看我编辑的答案的变体2。
library(reshape2)
my_data_long <- melt(my_data, id.vars = c("Block"))
ggplot(data=my_data_long, aes(x=Block, y=value, fill=variable, color=variable, alpha=variable)) +
geom_bar(stat="identity", position ="identity") +
scale_colour_manual(values=c("lightblue4", "red")) +
scale_fill_manual(values=c("lightblue", "pink")) +
scale_alpha_manual(values=c(.3, .8))