2个变量的箱线图

时间:2019-10-05 04:56:14

标签: r

我有一个数据框df。我需要并排放置2个变量(Cat1和Cat2)的箱形图。我知道这可以通过转置数据帧来实现。但是有没有一种方法可以不进行转置。有没有办法在ggplot中绘制箱形图?

df
                   da Cat1  Cat2 Cat3
1 2016-06-04 04:05:45   25   58   45
2 2016-06-04 04:05:46   56   65   56
3 2016-06-04 04:05:45   45   54   47
4 2016-06-04 04:05:46   78   56   89

我期望像下面这样的事情enter image description here

1 个答案:

答案 0 :(得分:0)

基本步骤是将您的数据转换为所谓的“整洁”数据集(see here)。

软件包tidyr具有一个函数gather,用于此目的:

library(ggplot2)
library(tidyr)

df = data.frame(
  Cat1 = rnorm(50),
  Cat2 = rnorm(50),
  Cat3 = rnorm(50)
)

# 'long' version of df
dL = gather(df,key = 'category',value = 'y')

ggplot(data = dL) +
  geom_boxplot(mapping = aes(x = category,y = y))

转置比数据帧op更像是矩阵运算;在任何情况下,都不清楚移置是否有帮助,但是将数据编码为更紧凑但更简单的表示形式(通过gather)使其适合ggplot API。