我有一個包含 20 個湖泊水質資訊的資料框。對于每個湖泊,每次訪問都會多次測量 ph 值和溶解氧水平,并將平均值和最大值記錄在資料框中。使用兩種不同的方法分別計算模型得出的溶解氧和 ph 值估計值。我想制作一個包含 4 個散點圖面板的圖,描繪每個估計“方法”和水質引數的觀察值與估計值之間的關系。我想避免使用像ggarrange()我正在使用的自定義主題這樣的方法,這需要大量額外的作業。我最好的想法是使用facet_wrap()in ggplot(),但這會產生不同變數的所有可能組合,我只對 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 " 方法估計 ph 值與平均ph值
2.估計DO 與平均DO的“ quad ”方法
3.估計ph 值與最大ph值的“線性”方法
4.估計DO 與平均DO的“線性”方法
有沒有辦法我可以重新排列我的資料框來完成這項作業?還是我需要以不同的方式處理整個事情?
任何幫助將不勝感激,并提前感謝您!
uj5u.com熱心網友回復:
您可以過濾資料框以僅保留 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 個圖。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/477221.html
下一篇:包裝的ggplot,行間填充
