用geom_bar()覆盖两个条形图

用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.

我试着把两个条形图叠加在一起,而不是在旁边。 数据来自同一数据集。我希望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.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))