在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:18between(cty, 15, 18)。最后一个变体也适用于连续变量。

【讨论】:

以上是关于在R中的1个绘图区域中放置4个直方图[重复]的主要内容,如果未能解决你的问题,请参考以下文章

R-CNN , Fast R-CNN , Faster R-CNN原理及区别

R语言绘图——条形图/柱状图

【R语言作图】如何在地图上任意位置画饼图直方图等

数字图像处理的Matlab实现—灰度变换与空间滤波

希望在直方图上编辑 X 轴以显示 R 中的大值 [重复]

求助!关于绘图程序刷新!!三个问题各100分献上!!!