首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在基数R中用同一个变量绘制两个盒子图

在基数R中用同一个变量绘制两个盒子图
EN

Stack Overflow用户
提问于 2021-04-24 11:41:21
回答 3查看 45关注 0票数 1

我试图在基数R中用相同的数字绘制两个盒子图,其中一个为PM2.5的值为0,一个为小时为12,另一个为PM2.5的值,当雨大于0时,PM2.5的值为12。这是我的数据集的一小部分,称为'dat':

代码语言:javascript
复制
     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

到目前为止,这就是我尝试过的,但我只是从中得到了一个方格:

代码语言:javascript
复制
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)

我该用这个换什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-24 12:54:21

没有必要对这两个子集进行concatenate:

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2021-04-24 12:16:17

ggplot通常是这样的答案:

代码语言:javascript
复制
library(ggplot2)

dat$rainy <- dat$RAIN > 0
ggplot(dat[dat$hour == 12,], aes(rainy, PM2.5)) + geom_boxplot() 
票数 1
EN

Stack Overflow用户

发布于 2021-04-24 12:20:23

如果您想要使用基本绘图系统:,请使用

也许您可以通过调整mfrow参数来尝试一个多面板图:

代码语言:javascript
复制
par(mfrow=c(2, 1))

然后可以使用这两个数据集调用boxplot()

代码语言:javascript
复制
boxplot(rainy)
boxplot(not_rainy)

你也可以用ggplot2来做

-You可以将一个分类逻辑变量/参数映射到aes()的"x“参数,并按照@dash2 2的建议使用+geom_boxplot()

-Another选项:通过调用以下内容将数据放入长格式:

代码语言:javascript
复制
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对象并保存它们*

代码语言:javascript
复制
plot1<-ggplot(rainy, aes(y=PM2.5))+geom_boxplot()
plot2<-ggplot(not_rainy, aes(y=PM2.5))+geom_boxplot()

然后使用cowplot::plot_grid()

代码语言:javascript
复制
cowplot::plot_grid(plot1, plot2)

*这也可用于基本地块

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67242395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档