【发布时间】:2020-04-29 02:11:49
【问题描述】:
我正在寻找一种解决方案,在 R 中使用 facet_wrap 并排绘制 boxplot。尽管有很多好的解决方案,但是,我没有遇到任何我想要的。我决定为我的两个data.frame 画一张我想看到的plot 的图片。 Data.frame C 有我的 校准 数据,用于不同计量的四种模型(即 KGE、NSE、PBIAS 和 R-Sq),而 Data.frame V 有我的验证 数据。我想使用ggplot2 功能的facet_wrap 查看每个指标的单独plot。以下是我到目前为止所做的,但它并没有让我更接近。
graphics.off()
rm(list = ls())
library(tidyverse)
C = data.frame(KGE_M1 = runif(3, 0, 0.5), NSE_M1 = runif(3,0,0.5), R_Sq_M1 = runif(3,-1,0.3), PBIAS_M1 = runif(3, -0.25, 0.25),
KGE_M2 = runif(3, 0.2, 0.7), NSE_M2 = runif(3,0.2,0.7), R_Sq_M2 = runif(3,-0.5,0.7), PBIAS_M2 = runif(3, -0.15, 0.15),
KGE_M3 = runif(3, 0.3, 0.8), NSE_M3 = runif(3,0.3,0.8), R_Sq_M3 = runif(3,0.3,0.8), PBIAS_M3 = runif(3, -0.10, 0.10),
KGE_M4 = runif(3, 0.5, 1), NSE_M4 = runif(3,0.5,1), R_Sq_M4 = runif(3,0.5,1), PBIAS_M4 = runif(3, -0.05, 0.05),
Cal = rep("Calibration", 3))
V = data.frame(KGE_M1 = runif(3, 0, 0.5), NSE_M1 = runif(3,0,0.5), R_Sq_M1 = runif(3,-1,0.3), PBIAS_M1 = runif(3, -0.25, 0.25),
KGE_M2 = runif(3, 0.2, 0.7), NSE_M2 = runif(3,0.2,0.7), R_Sq_M2 = runif(3,-0.5,0.7), PBIAS_M2 = runif(3, -0.15, 0.15),
KGE_M3 = runif(3, 0.3, 0.8), NSE_M3 = runif(3,0.3,0.8), R_Sq_M3 = runif(3,0.3,0.8), PBIAS_M3 = runif(3, -0.10, 0.10),
KGE_M4 = runif(3, 0.5, 1), NSE_M4 = runif(3,0.5,1), R_Sq_M4 = runif(3,0.5,1), PBIAS_M4 = runif(3, -0.05, 0.05),
Val = rep("Validation", 3))
C = gather(C, key = "Variable", value = "Value", -Cal)
V = gather(V, key = "Variable", value = "Value", -Val)
ggplot(data = C)+
geom_boxplot(aes(x= Variable, y = Value))
+ facet_wrap(~Variable)
【问题讨论】:
-
必须是
facet_wrap吗?如果没有,只需制作 4 个不同的图,然后在gridExtra包中使用grid.arrange()之类的东西将它们组合起来 -
谢谢 Jaris,还有很多其他的
plots,如果使用grid.arrange会非常费力。这就是为什么 m 优先使用facet_wrap。
标签: r ggplot2 plot boxplot facet-wrap