R 在ggplot中按组绘制堆叠发散条形图

R 在ggplot中按组绘制堆叠发散条形图,r,ggplot2,charts,R,Ggplot2,Charts,我试着做一张这样的图表: 我们的想法是绘制3个数量,在这个混合叠加条形图中,我们有一个数据框,其中一行为负值,两行为正值,但是我需要将负值与第一个正值条叠加,我还需要3种颜色。到目前为止,我的代码如下:(数据帧已经具有所需的形状): 堆叠和躲避总是有点棘手。在您的情况下,可以这样实现: 将区域转换为因子。(这确保步骤3起作用) 将数据集一分为二以获得负值和正值 使用tidy::complete填充数据集,使每个数据集包含度量、区域和组的“所有”组合。(这确保了避险有效 使用两个geom_col

我试着做一张这样的图表:

我们的想法是绘制3个数量,在这个混合叠加条形图中,我们有一个数据框,其中一行为负值,两行为正值,但是我需要将负值与第一个正值条叠加,我还需要3种颜色。到目前为止,我的代码如下:(数据帧已经具有所需的形状):


堆叠和躲避总是有点棘手。在您的情况下,可以这样实现:

  • 区域
    转换为
    因子
    。(这确保步骤3起作用)
  • 将数据集一分为二以获得负值和正值
  • 使用tidy::complete填充数据集,使每个数据集包含度量、区域和组的“所有”组合。(这确保了避险有效
  • 使用两个geom_col图层,使用
    position=“dodge”
    绘制正值和负值。我添加了
    na.rm=TRUE
    ,以删除通过
    complete
    添加的缺失值
  • 
    图书馆(GG2)
    图书馆(dplyr)
    图书馆(tidyr)
    df3$区域%
    tidyr::完成(区域、组、公制)
    
    p2有没有办法将注释文本放在每个条的右侧?Hi@JKLambert。我刚刚做了一个编辑,向您展示了一种通过geom_文本添加标签的方法。非常感谢,我的实际问题是在这个绘图的右侧绘制一个两列表格。该表格有两列六行,我想将这些条与行对齐你只需要读一条线,然后用手指跳转到表格的行。实际表格可以有两列和其他绘图中未使用的数据。你知道怎么做吗?我正在尝试ggarrange,但这确实改变了大小…请帮助。我刚刚添加了一种使用补丁的方法。哈哈。看看我的编辑。这是应该说得更清楚。如果你仍然遇到任何问题,我建议你在我的方法的基础上,如果你愿意的话,提出一个新的问题。
    df3 <- read.table(
    text = 
    "region group metric somevalue
    blue T1 epsilon 63
    blue T2 epsilon -40
    red T1 epsilon 100
    blue T1 kappa 19
    blue T2 kappa -30
    red T1 kappa 75
    blue T1 zulu  50
    blue T2 zulu -18
    red T1 zulu 68", header=TRUE)
    
    p2 <- ggplot(df3, aes(x = metric, y = somevalue, fill=region))+
      geom_col(aes(fill = group), width = 0.7) + geom_bar(position = 'dodge', stat='identity')
    p2