分组箱线图,然后在 r 中列
Posted
技术标签:
【中文标题】分组箱线图,然后在 r 中列【英文标题】:Boxplot by group and then column in r 【发布时间】:2019-11-28 03:40:59 【问题描述】:如何制作箱线图,以使箱线图中的每组箱都包含数据框中的变量列。
例如使用 mpg 数据集:
head(mpg)
# A tibble: 234 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2 2008 4 manual(m6) f 20 31 p compact
4 audi a4 2 2008 4 auto(av) f 21 30 p compact
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compact
7 audi a4 3.1 2008 6 auto(av) f 18 27 p compact
8 audi a4 quattro 1.8 1999 4 manual(m5) 4 18 26 p compact
9 audi a4 quattro 1.8 1999 4 auto(l5) 4 16 25 p compact
10 audi a4 quattro 2 2008 4 manual(m6) 4 20 28 p compact
# ... with 224 more rows
所以在每个 cyl 组 (4,5,6,8) 中,我想为每个变量/列 cty、hwy 和 displ 绘制箱线图。
通常,将 ggplot 中的填充设置为因子变量,但在这种情况下,我有 3 个变量。
它应该看起来像这样:
【问题讨论】:
用谷歌图表怎么样?developers.google.com/chart/interactive/docs/gallery/… 查看本指南:sthda.com/english/wiki/… 【参考方案1】:您需要将三个变量的数据转换为长格式。这里是 data.table
和 melt
函数的示例,但您会很容易找到与 tydr
相同的示例:
library(ggplot2)
library(data.table)
mpg <- setDT(copy(mpg))
mpg_plot <- melt(mpg,measure.vars = c("cty","hwy","displ"),value.name = "val",variable.name = "var")
ggplot(mpg_plot, aes(x = as.factor(cyl),y = val,fill = var))+
geom_boxplot()+
theme_light()
【讨论】:
是的..我也很接近。mpg %>% select(cyl, cty, hwy, displ) %>% gather(key, value, -cyl) %>% ggplot() + aes(factor(cyl), value, fill = factor(key)) + geom_boxplot()
我新的 tydr nijas 很接近 :)以上是关于分组箱线图,然后在 r 中列的主要内容,如果未能解决你的问题,请参考以下文章