如何从facet_plot中提取单个图并保持缩放?

时间:2017-09-19 18:12:02

标签: r ggplot2 facet facet-wrap

从长格式数据的一个数据框中,下面的第一个绘图调用给出了这个joyplots矩阵:enter image description here在13个场景中,每个场景都有一个山脊线和颜色比例。

然而,当我尝试每页只显示一个情节时,在循环播放的SingleScenario'下面的绘图调用,针对每个场景min和max的单个数据子集进行缩放(每个绘图具有完整的黄色到紫色色标,并且我不确定脊高度标度是保留还是重置)。

如何将单个场景绘制为单个页面并保持原始缩放?通过这种方式,可以通过翻阅13页的pdf来显示差异。

library(ggplot2)
library(viridis)

matrix <- ggplot(df, aes(watermonth, as.integer(wateryear), height = inflow, group=as.integer(wateryear)
           , fill=cumWYinf))  + geom_ridgeline(stat = "identity",
          show.legend = F, scale = 0.005, alpha = 0.8) + facet_wrap(~scenario, nr=4, nc=4) +
          scale_fill_viridis() 


scenarios <- c("q0", "e1", "e2", "e3", "e4", "e5", "cwc30", "l1", "l2", "l3", "l4", "l5", "cwc70")

for(i in 1:length(scenarios)) {

facets <- c(paste0(scenarios[i]))

SingleScenario <- ggplot(df[df$scenario %in% facets,], aes(watermonth, as.integer(wateryear),
      height = inflow, group=as.integer(wateryear), fill = cumWYinf)) +
      geom_ridgeline(stat = "identity", show.legend = F, scale = 0.005, alpha = 0.9) +
      + facet_wrap(~scenario, nr=1, nc=1) + scale_fill_viridis() 

SingleScenario
ggsave(paste(scenarios[i],".pdf"), dpi = 300, width = 17, height = 11, units = "in") }

谢谢。

 date        watermonth wateryear inflow scenario SacWYT SJRWYT cumWYinf
  <date>           <dbl>     <dbl>  <dbl>    <chr>  <int>  <int>    <dbl>
1 1921-10-31          1      1922  66.38       q0      2      2  2293.78
2 1921-11-30          2      1922  50.65       q0      2      2  2293.78
3 1921-12-31          3      1922  82.09       q0      2      2  2293.78

1 个答案:

答案 0 :(得分:1)

如果没有示例数据集来测试我的预测,很难回答,但您可以尝试使用limits = ...调整填充:

scale_fill_viridis(limits = range(df$cumWYinf))

这样,所有绘图都具有相同的比例。