如何从 facet_plot 中提取单个地块并保持缩放比例?
How to extract single plots from facet_plot and maintain scaling?
从一个长格式的数据帧中,下面的第一个绘图调用给了我这个欢乐图矩阵:13 个场景中的每一个都有一个脊线和色标。
但是,当我尝试每页只显示一个图时,在下面的循环 'SingleScenario' 绘图调用中,缩放是针对每个场景最小值和最大值的单个数据子集完成的(每个图都有完整的黄色到紫色色阶,我不确定脊高色阶是否保留或重置)。
如何将单个场景绘制为单页并保持原始缩放比例?这样,通过向下翻阅 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
如果没有示例数据集来测试我的预测,很难回答,但是你可以尝试调整填充 limits = ...
:
scale_fill_viridis(limits = range(df$cumWYinf))
这样所有的地块都会有相同的比例。
从一个长格式的数据帧中,下面的第一个绘图调用给了我这个欢乐图矩阵:
但是,当我尝试每页只显示一个图时,在下面的循环 'SingleScenario' 绘图调用中,缩放是针对每个场景最小值和最大值的单个数据子集完成的(每个图都有完整的黄色到紫色色阶,我不确定脊高色阶是否保留或重置)。
如何将单个场景绘制为单页并保持原始缩放比例?这样,通过向下翻阅 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
如果没有示例数据集来测试我的预测,很难回答,但是你可以尝试调整填充 limits = ...
:
scale_fill_viridis(limits = range(df$cumWYinf))
这样所有的地块都会有相同的比例。