使用qplot / ggplot2的简单boxplot

时间:2016-08-24 23:27:51

标签: r ggplot2 boxplot

这是我的第一篇文章,所以请轻松一点。到目前为止(过去〜5年?)我已经能够以正确的方式调整我的R代码或者在这个或其他各种网站上找到答案。当我说我寻找答案时相信我! 我有一个工作脚本来创建基本R中附加的boxplot。 http://i.stack.imgur.com/NaATo.jpg

这很好,但我真的只是想在ggplot中“爵士乐”,这是徒劳的。 我查看了以下问题但它们很接近,但并不完整: Why does a boxplot in ggplot requires axis x and y? How do you draw a boxplot without specifying x axis?

如果所有数值变量都在相同的范围内,我的数据基本上就像“mtcars”。 我想要做的就是在同一个箱图上绘制每个变量,就像我上面制作的基本R箱图一样。我的y轴是每个盒子的相同连续刻度(0到1),x轴只是标记每个月加上年平均值(认为所有mtcars值在y轴上相同,x轴是每个车辆模型)。每箱我的数据代表75次观察(如果mtcars有75种不同的车型,有点像),所有的盒子都是相同的。 我错过了什么?

1 个答案:

答案 0 :(得分:3)

虽然我认为mtcars不是一个很好的例子,但它是:

首先,我们使用列而不是rownames使数据(希望)与您的数据更相似。

mt = mtcars
mt$car = row.names(mtcars)

然后我们重塑为长格式:

mt_long = reshape2::melt(mt, id.vars = "car")

然后情节很简单:

library(ggplot2)
ggplot(mt_long, aes(x = variable, y = value)) +
    geom_boxplot()

FontSpace's Unicode Analyzer

使用ggplot全部但需要“长”格式而非“宽”格式的数据。如果您希望将某些内容映射到图形尺寸(x轴,y轴,颜色,形状等),那么它应该是数据中的一列。幸运的是,使用reshape2::melttidyr::gather以正确的格式获取数据通常非常容易。我建议您阅读enter image description here了解有关此主题的更多信息。