繁体   English   中英

在ggplot2的geom_bar上堆叠多列

[英]Stacking multiple columns on a geom_bar in ggplot2

实质上:

  1. 我想绘制一个条形图,以显示两个表列的合计值,这是我设法使用的: err.bar <- ggplot(ss.data, aes(x=pop, y=obs+proc)) err.bar <- err.bar + geom_bar(position="stack", stat = "identity") err.bar

  2. 我要对聚合条的两个部分进行阴影处理,而不必对颜色进行着色。

  3. 最后,我想通过根据种类将它们分组来对条进行着色(即,按照Excel图形的x轴标签上所示的E&C种类)

我使用的数据类似于:

  • 弹出E1 E2 E3 E4 E5 E6 E7 C1 C2 C3 C4
  • 观察0.0027 0.0018 0.0464 0.0095 0.0034 0.0117 0.017 0.1178 0.0449 0.039 0.0903
  • 过程0.0319 0.0196 0.0511 0.0143 0.0048 0.0078 0.0396 0.1662 0.074 0.1681 0.1358

这是一个解决方案,可让您获得所需的大部分东西。 但是请注意,ggplot的设计不允许在单个绘图中使用单独的“阴影”和“颜色”参数。 取而代之的是,我使用灰色填充颜色为您的obsproc类别着色,并且将物种分为多个方面(而不是分别给它们上色)。

library(ggplot2)
library(reshape2)

ss.data = data.frame(
    pop=c("E1", "E2", "E3", "E4", "E5", "E6", "E7", "C1", "C2", "C3", "C4"),
    obs=c(0.0027, 0.0018, 0.0464, 0.0095, 0.0034, 0.0117, 0.017, 0.1178,
          0.0449, 0.039, 0.0903),
    proc=c(0.0319, 0.0196, 0.0511, 0.0143, 0.0048, 0.0078, 0.0396, 0.1662,
           0.074, 0.1681, 0.1358), stringsAsFactors=FALSE)

# Add new column 'species' by removing the trailing digits from 'pop'.
ss.data$species = gsub("\\d", "", ss.data$pop)

# Convert data to long-form with 'melt' from the reshape2 package.
mdat = melt(ss.data, id.vars=c("pop", "species"),
            measure.vars=c("obs", "proc"))

plot_1 = ggplot(mdat, aes(x=pop, y=value, fill=variable)) +
         theme_bw() +
         geom_bar(position="stack", stat="identity") +
         scale_fill_manual(values=c("grey50", "grey80")) +
         facet_grid(. ~ species, space="free_x", scales="free_x",
             labeller=label_both)

ggsave("plot_1.png", plot=plot_1, width=6.5, height=4)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM