在ggplot2 facet中绘制比例数据的子集,保持原始比例信息

时间:2016-02-07 10:50:47

标签: r ggplot2 facet

我有兴趣专注于面板35面板网格叠加条形图中的两个因子变量 - 只生成一个10面板图。

原始图(可行)的代码如下:

ggplot(region, aes(Year, Em_sum/1000000, fill=Region, order=Region)) +
    geom_bar(position='fill', stat='identity') + scale_fill_brewer(palette="Set1") + 
    guides(fill = guide_legend(reverse=T)) + scale_y_continuous(labels = percent_format()) +
    ylab("Proportion of Global FLW Emissions (%)") +
    scale_x_discrete(breaks=seq(1961, 2011, 5)) +
    theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) +
    facet_grid(Group ~ Stage, scales="free")

此代码生成35面板刻面堆栈条形图网格。实际上,我想要做的是仅在两个区域(而不是原始的七个)中显示面板数据,而是保留这两个区域与完整数据集的比例。结果将是10个面板网格,0-100%,但是这两个区域不会填充100%的方面,只是两个区域的值。剩下的白色空间'在小组中,不包括在该小组中的区域的比例。

在我的代码的第一行中回答类似问题(Subset and ggplot2)时的解决方案如下:

ggplot(subset(region, Region %in% c("NAm.Oceania", "Indus.Asia"), aes(Year, Em_sum/1000000, fill=Region, order=Region))) +

我收到以下错误:

  

x [j]中的错误:无效的下标类型' list'

如下所述简化代码(与上面建议的解决方案一致),只生成两个所需区域的100%堆积条形图,但丢失了其他五个区域的所有信息。即情节填充100%而不是一些较低的值,这只是两个欲望区域与所有七个区域的比例。

ggplot(subset(region, Region %in% c("NAm.Oceania", "Indus.Asia"))) +
    geom_bar(aes(Year, Em_sum/1000000, fill=Region, order=Region), position='fill', stat='identity')

我的数据集是232k行 - 如果该数据集的摘录有用,请建议我如何提供它。

谢谢!

0 个答案:

没有答案