【发布时间】:2016-08-24 23:27:50
【问题描述】:
这是我的第一篇文章,所以请放轻松。直到现在(过去约 5 年?)我已经能够以正确的方式调整我的 R 代码,或者在这个或其他各种网站上找到答案。当我说我一直在寻找答案时,请相信我! 我有一个工作脚本可以在基本 R 中创建附加的箱线图。 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 种不同的车辆模型),同样所有的框都是相同的比例。 我错过了什么?
【问题讨论】:
-
ggplot需要长格式数据。您需要使用tidyr::gather或reshape2::melt将数据转换为长格式。这不会在mtcars上很好地演示,因为 (a) mtcars 没有 x 轴的 ID 变量(尽管我们可以将行名转换为列)并且 (b) 它看起来不太好用一些离散数据几乎没有相同规模的东西。但是,如果您以长格式获取数据,您的 ggplot 应该像ggplot(long_data, aes(x = variable, y = value)) + geom_boxplot()一样简单。 -
基本上,如果 mtcars 是 75 个车辆模型,并且每个列变量是 10 列的圆柱体。圆柱的每一列都是不同的年份。所以它涵盖了 1986 年到 1995 年的汽缸价值。基本上我会写:
-
SORRY---,基本上我会写一些类似的东西:boxplot(mtcars$cyl1986, mtcars$cyl1987...) 等等。但我一辈子都不能在 ggplot 或 qplot 中做这个简单的箱线图。我知道这是因为它是一个更高级的包,但仍然如此。