首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的缩放叠加条形图

R中的缩放叠加条形图
EN

Stack Overflow用户
提问于 2015-02-05 16:42:52
回答 2查看 362关注 0票数 0

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

有人知道如何使用ggplot2实现这一点吗?

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-05 17:56:59

它是从您的df对象开始的一行:

代码语言:javascript
复制
require(reshape2)
ggplot(melt(df), 
  aes(x=variable, y=value, fill=Region)) +
  geom_bar(position="fill",stat="identity")

如果你想要更好的标签:

代码语言:javascript
复制
ggplot(melt(df,variable.name="Code", value.name="Fraction") ,
   aes(x=Code, y=Fraction, fill=Region)) + 
   geom_bar(position="fill",stat="identity")

会给你的。

票数 1
EN

Stack Overflow用户

发布于 2015-02-05 17:44:23

是的,有几个步骤我们需要采取的,以使你的阴谋。首先,我重新制作TiA和CvSS的比例,然后我融化df。require(reshape2) require(ggplot2

代码语言:javascript
复制
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")

输出图如下所示

的评论展示了一种更简单、更好的实现相同图形的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28349393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档