我有一个数据框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
答案 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。