【发布时间】:2017-02-27 19:34:26
【问题描述】:
示例数据框:
a <- c(1, 0, 1)
b <- c(0, 1, 0)
c <- c(1, 0, 1)
total <- c(100,200,300)
my.data <- data.frame(a, b, c, total)
> my.data
a b c total
1 1 0 1 100
2 0 1 1 200
3 1 0 1 300
我想创建一个单独的箱线图来显示每一列的“总计”分布:a、b、c,但只考虑值 = 1 的那些。 示例:a 列的第 2 行被忽略,因为它是 0,因此 a 列的分布为 100 和 300。B 列的分布为 200,c 列的分布为 100,200,300。
我可以单独绘制它们:
ggplot(subset(my.data,a==1), aes(x=a,y=total)) +
geom_boxplot()
ggplot(subset(my.data,b==1), aes(x=b,y=total)) +
geom_boxplot()
ggplot(subset(my.data,c==1), aes(x=c,y=total)) +
geom_boxplot()
我也尝试了以下方法,但不正确:
ggplot(my.data, aes(x=as.factor(c("a","b","c")),y=total)) +
geom_boxplot()
希望有一个很棒的 R 函数/方法可以让我一次性完成我的情节。不要因为 Total 列而认为我可以使用 melt() 。提前致谢。
编辑:显然,我应该/可以使用melt(),只需要正确使用它。
【问题讨论】: