在R或Python中垂直堆叠多个图

时间:2017-04-01 16:35:05

标签: python r plot

我正在尝试重现下面的图表,其中显示了y轴不同部分的平均值和标准差。它们不是将它们绘制在单独的子图中,而是共享x轴。

this plot

我看到this suggestion要使用R中的lattice库,但是我想在侧面使用标签,而不是将每个图表分开 - 就像我提供的示例一样

1 个答案:

答案 0 :(得分:1)

R中,这是一个ggplot2版本:

library(ggplot2)
library(reshape2)

# Fake data
set.seed(2)
n = 20
dat = data.frame(mp=rep(seq(0,1,length=n),2),
                 group=rep(LETTERS[1:2], each=n),
                 Mean=rep(c(1,1.1),each=n)*seq(0.7,0,length=n),
                 SD=rep(c(0.1,.12), each=n) + rnorm(2*n,0,0.02))

dat = melt(dat, id.var=c("mp","group"))
dat$variable = factor(dat$variable, levels=c("SD","Mean"))

ggplot(dat, aes(mp, value, colour=group)) +
  facet_grid(variable ~ ., scales="free", space="free", switch="y", ) +
  geom_vline(xintercept=0.6, colour="grey40", linetype="11") +
  geom_line() +
  geom_point() +
  scale_y_continuous(breaks=function(x) {round(seq(0,max(x),length=5)[-5],1)}) +
  expand_limits(y=c(0,0.2)) +
  labs(x="Mixing Parameter", y="") +
  theme_bw() +
  theme(panel.spacing.y=unit(0,"lines"),
        strip.placement="outside",
        strip.background=element_rect(fill=NA, colour=NA)) +
  guides(colour=FALSE)

enter image description here