如何选择性地选择 facet_wrap() 组合

How to selectively choose facet_wrap() combinations

我有一个包含 20 个湖泊水质信息的数据框。对于每个湖泊,每次访问都会多次测量 ph 值和溶解氧水平,并将平均值和最大值记录在数据框中。使用两种不同的方法分别计算溶解氧和 ph 值的模型推导估计值。我想用 4 个散点图面板绘制一个图,描述每个估计“方法”和水质参数的观测值和估计值之间的关系。我想避免使用像 ggarrange() 这样的方法,因为我有一个我正在使用的自定义主题,这需要很多额外的工作。我最好的想法是在 ggplot() 中使用 facet_wrap(),但这会产生不同变量的所有可能组合,而我只对 4 种特定组合感兴趣。

示例:

library(dplyr)
library(ggplot)

#creating a dataframe
df <- data.frame(
  method = c(rep("quad", 10), rep("linear",10)),
  date = c(rep("2021-11-17", 10), 
           rep("2022-02-27", 5),
           rep("2021-11-20",5)),
  ph_est = rnorm(20, 3),
  disso_est = rnorm(20, 1),
  mean_ph = rnorm(20, 0),
  max_ph = rnorm(20, 2),
  mean_disso = rnorm(20, 5),
  max_disso = rnorm(20, 10)
)
df$ID <- seq.int(nrow(df))
#pivoting longer in order to plot
df_l <- pivot_longer(df,
  cols = c("ph_est", "disso_est"),
               names_to = "samp_pars",
               values_to = "samp_vals")
df_l <- pivot_longer(df_l, cols = c("mean_ph", "max_ph", "mean_disso", "max_disso"),
               names_to = "est_pars",
               values_to = "est_vals")
#Attempting the plot
ggplot(df_l, aes(x = est_vals, y = samp_vals)) +
  geom_point() +
  facet_wrap(~ method + samp_pars + est_pars, scales = "free") 

输出很接近,但我只想要 4 个面板:

1."quad" 估计 phmean ph[=17 的方法=]

2."quad" estimated DO 与 mean DO[=17 的方法=]

3.linear" estimated ph 与 max ph[=17 的方法=]

4.linear" estimated DO 与 mean DO[=17 的方法=]

有什么方法可以重新排列我的数据框来完成这项工作吗?还是我需要以不同的方式处理这整件事?

如有任何帮助,我们将不胜感激,并提前致谢!

您可以过滤数据框以仅保留 4 个绘图所需的组合。

ggplot 之前添加以下内容:

df_l <- filter(df_l,
               (method=="quad" & samp_pars=="ph_est" & est_pars=="mean_ph") |
                 (method=="quad" & samp_pars=="disso_est" & est_pars=="mean_disso") |
                 (method=="linear" & samp_pars=="ph_est" & est_pars=="max_ph") |
                 (method=="linear" & samp_pars=="disso_est" & est_pars=="mean_disso") 
               )

那么ggplot只会输出你需要的4个图