在R中的1个绘图区域中放置4个直方图[重复]
Posted
技术标签:
【中文标题】在R中的1个绘图区域中放置4个直方图[重复]【英文标题】:Placing 4 histograms in 1 plot area in R [duplicate] 【发布时间】:2020-05-17 11:09:05 【问题描述】:我想绘制一个变量 x1 的直方图,通过另一个变量 x2 的值将数据细分为 4,并将 4 个直方图放在 1 个绘图区域中,每行 2 个直方图。
例如,
library(tidyverse)
ggplot(filter(mpg, cty < 15), aes(x = displ)) + geom_histogram(binwidth = 0.2)
ggplot(filter(mpg, cty == c(15,16,17,18)), aes(x = displ)) + geom_histogram(binwidth = 0.05)
ggplot(filter(mpg, cty == c(19,20,21,22)), aes(x = displ)) + geom_histogram(binwidth = 0.05)
ggplot(filter(mpg, cty > 23), aes(x = displ)) + geom_histogram(binwidth = 0.1)
感谢您的帮助!
【问题讨论】:
最好使用%in%
,即cty %in% c(15,16,17,18)
。检查1:2 == c(0, 1, 3, 4, 5)
【参考方案1】:
您可以使用ggpubr
-package 中的ggarrange()
:
p1 <- ggplot(filter(mpg, cty < 15), aes(x = displ)) +
geom_histogram(binwidth = 0.2)
p2 <- ggplot(filter(mpg, between(cty, 15, 18)), aes(x = displ)) +
geom_histogram(binwidth = 0.05)
p3 <- ggplot(filter(mpg, between(cty, 19, 22)), aes(x = displ)) +
geom_histogram(binwidth = 0.05)
p4 <- ggplot(filter(mpg, cty > 23), aes(x = displ)) +
geom_histogram(binwidth = 0.1)
ggpubr::ggarrange(p1, p2, p3, p4)
正如 markus 在他的评论中已经提到的那样,使用 cty == c(15, 16, 17, 18)
过滤会返回 mpg
中的所有值,其中 cty
介于 15 和 18 之间。您应该使用 cty %in% c(15, 16, 17, 18)
、cty %in% 15:18
或between(cty, 15, 18)
。最后一个变体也适用于连续变量。
【讨论】:
以上是关于在R中的1个绘图区域中放置4个直方图[重复]的主要内容,如果未能解决你的问题,请参考以下文章