【发布时间】:2018-10-30 01:39:09
【问题描述】:
我正在尝试用 ggplot2 绘制箱线图。我想把中间改成意思。
我知道以前有人问过类似的问题,但我问这个是因为该解决方案对我不起作用。具体来说,我遵循了这个公认的answer中的第一个解决方案@
这就是我对 mpg 测试数据所做的:
library(ggplot2)
library(tidyverse)
mpg %>%
ggplot(aes(x = class, y = cty, middle = mean(cty))) +
geom_boxplot()
没有效果。
谁能帮忙指出我做错了什么?谢谢。
【问题讨论】:
-
实际上,如果您仔细查看链接的答案,
middle = mean()调用在geom_boxplot(aes())调用内部,而不是ggplot调用。尝试将其转移到boxplot调用,因为我认为ggplot本身不存在middle规范。 -
aes可以在geom_boxplot或ggplot内部调用(在这种情况下它由所有布局共享)。我都试过了,虽然它真的不应该有什么不同,但它没有。 -
另一种选择是平均值和中位数在所有情况下都非常相似。试试这个:tapply(mpg$cty, mpg$class, summary)
-
@bob1 你说得对,他们中的大多数都非常接近。但至少有一个类别,即次紧凑型,其均值 (20.37) 与中值 (19) 有很大不同。我尝试使用其他功能(例如 max),但没有任何效果。开始认为链接的解决方案是错误的。知道不为此创建新的 df 会有什么解决方案吗?
-
@EJ2015 如果你还在寻找解决方案,我刚刚回答了一个有点类似的问题here。解决方案 2 可能会根据您的用例进行修改。