我试图在基数R中用相同的数字绘制两个盒子图,其中一个为PM2.5的值为0,一个为小时为12,另一个为PM2.5的值,当雨大于0时,PM2.5的值为12。这是我的数据集的一小部分,称为'dat':
No year month day hour PM2.5 PM10 SO2 NO2 CO O3 TEMP PRES DEWP RAIN wd WSPM station
1 7345 2014 1 1 0 20 90 18 62 NA NA -1.5 1007.3 -12.5 0 SSE 0.6 Aotizhongxin
2 7346 2014 1 1 1 43 348 25 91 1100 1 -2.6 1006.9 -12.1 0 WSW 0.2 Aotizhongxin
3 7347 2014 1 1 2 79 423 41 103 1800 1 -3.0 1006.9 -11.3 0 WSW 0.6 Aotizhongxin
4 7348 2014 1 1 3 82 337 43 101 2100 1 -3.3 1006.4 -11.1 0 SW 0.6 Aotizhongxin
5 7349 2014 1 1 4 124 594 59 130 2400 1 -2.7 1006.1 -10.5 0 ENE 1.8 Aotizhongxin
6 7350 2014 1 1 5 89 307 47 102 2500 1 -3.1 1006.6 -10.4 0 N 1.0 Aotizhongxin
7 7351 2014 1 1 6 59 161 45 91 1900 1 -2.6 1007.2 -10.9 0 S 1.0 Aotizhongxin
8 7352 2014 1 1 7 31 93 24 69 900 4 -2.9 1007.9 -10.2 0 SE 1.1 Aotizhongxin到目前为止,这就是我尝试过的,但我只是从中得到了一个方格:
not_rainy <- subset(dat, dat$hour == 12 & dat$RAIN == 0)
rainy <- subset(dat, dat$hour == 12 & dat$RAIN > 0)
vals <- c(rainy$PM2.5,not_rainy$PM2.5)
boxplot(vals)我该用这个换什么?
发布于 2021-04-24 12:54:21
没有必要对这两个子集进行concatenate:
not_rainy <- subset(dat, dat$hour == 12 & dat$RAIN == 0)
rainy <- subset(dat, dat$hour == 12 & dat$RAIN > 0)
# vals <- c(rainy$PM2.5,not_rainy$PM2.5)
boxplot(not_rainy, rainy)发布于 2021-04-24 12:16:17
ggplot通常是这样的答案:
library(ggplot2)
dat$rainy <- dat$RAIN > 0
ggplot(dat[dat$hour == 12,], aes(rainy, PM2.5)) + geom_boxplot() 发布于 2021-04-24 12:20:23
如果您想要使用基本绘图系统::,请使用
也许您可以通过调整mfrow参数来尝试一个多面板图:
par(mfrow=c(2, 1))然后可以使用这两个数据集调用boxplot():
boxplot(rainy)
boxplot(not_rainy)你也可以用ggplot2来做
-You可以将一个分类逻辑变量/参数映射到aes()的"x“参数,并按照@dash2 2的建议使用+geom_boxplot()。
-Another选项:通过调用以下内容将数据放入长格式:
data.frame(data=vals, rainy=c(rep(c(TRUE, FALSE), times=length(rainy)), rep(c(TRUE, FALSE), times=length(not_rainy))))然后,在调用ggplot中使用+facet_wrap(~rainy)
另一种选择是使用牛仔绘图包:
创建两个ggplot对象并保存它们*
plot1<-ggplot(rainy, aes(y=PM2.5))+geom_boxplot()
plot2<-ggplot(not_rainy, aes(y=PM2.5))+geom_boxplot()然后使用cowplot::plot_grid()
cowplot::plot_grid(plot1, plot2)*这也可用于基本地块
https://stackoverflow.com/questions/67242395
复制相似问题