R中的缩放堆积条形图

时间:2015-02-05 16:42:53

标签: r

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

2 个答案:

答案 0 :(得分:1)

是的,我们需要采取一些步骤来制作你的情节。首先我重新制作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")

输出图表如下所示

enter image description here

修改的 Spacedman的评论显示了一种更简单,更好的方法来实现相同的图形。

答案 1 :(得分: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")

会把它们交给你。