【问题标题】:Scaled Stacked Bar Chart in RR中的缩放堆积条形图
【发布时间】:2015-02-05 16:42:52
【问题描述】:

我正在尝试使用下面给出的数据框 (df) 在 R 中生成堆积条形图。图表需要缩放以显示比例而不是绝对值。这个想法是让 TiA 和 CvSS 在 x 轴上,条形除以每个区域分别占 TiA 和 CvSS 的比例。

有谁知道如何使用 ggplot2 来实现这一点?

Region <- c("A", "B", "C")
TiA <- c(2065.8408, 1020.1331, 742.8428)
CvSS <- c(1.549020, 1.422771, 1.174165)
df <- data.frame(Region, TiA, CvSS)

【问题讨论】:

    标签: r


    【解决方案1】:

    它是从您的 df 对象开始的单行代码:

    require(reshape2)
    ggplot(melt(df), 
      aes(x=variable, y=value, fill=Region)) +
      geom_bar(position="fill",stat="identity")
    

    如果你想要更好的标签:

    ggplot(melt(df,variable.name="Code", value.name="Fraction") ,
       aes(x=Code, y=Fraction, fill=Region)) + 
       geom_bar(position="fill",stat="identity")
    

    会给你的。

    【讨论】:

      【解决方案2】:

      是的,我们需要采取一些步骤来制作您的情节。首先我将 TiA 和 CvSS 重新制作为比例,然后我融化了 df。 require(reshape2) require(ggplot2

      Region <- c("A", "B", "C")
      TiA <- c(2065.8408, 1020.1331, 742.8428)
      CvSS <- c(1.549020, 1.422771, 1.174165)
      TiA.sum<-sum(TiA)
      CvSS.sum<-sum(CvSS)
      TiA<-TiA/TiA.sum
      CvSS<-CvSS/CvSS.sum
      df <- data.frame(Region, TiA, CvSS)
      
      require(reshape2)
      df.m<-melt(df)
      print(df.m)
      require(ggplot)
      qplot(data=df.m,x=variable,y=value,fill=Region,geom='bar',stat="identity")
      

      输出图是这样的

      编辑 Spacedman 的评论显示了实现相同图表的更简单和更好的方法。

      【讨论】:

      • 你不需要所有的缩放:ggplot(melt(df), aes(x=variable, y=value, fill=Region)) + geom_bar(position="fill",stat="identity") 将通过提供的df 来完成。
      猜你喜欢
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 2022-06-16
      相关资源
      最近更新 更多