所以我知道解决这个问题的更好方法是使用 stat_summary()
函数,但这是为了解决 Hadley 的 R for Data Science 书中提出的一个问题,主要是为了我自己的好奇心。它询问如何转换使用 stat_summary()
制作的示例图的代码。与 geom_pointrange()
制作相同的情节.例子是:
ggplot(data = diamonds) +
stat_summary(
mapping = aes(x = cut, y = depth),
fun.ymin = min,
fun.ymax = max,
fun.y = median
)
情节应该是这样的:
(来源:had.co.nz)
我尝试过使用以下代码:
ggplot(data = diamonds, mapping = aes(x = cut, y = depth)) +
geom_pointrange(mapping = aes(ymin = min(depth), ymax = max(depth)))
但是,这绘制了每个切割类别中所有深度值的最小值和最大值(即,所有
ymin
和 ymax
都是相同的)。我也尝试过传递最小值和最大值的向量,但是 ymin
据我所知,只采用单个值。这可能很简单,但我认为人们大多使用 stat_summary()
因为我发现很少有 geom_pointrange()
的例子通过谷歌使用。
最佳答案
我认为你需要在 plot 函数之外做总结才能使用 geom_pointrange
:
library(dplyr)
library(ggplot2)
summary_diamonds <- diamonds %>%
group_by(cut) %>%
summarise(lower = min(depth), upper = max(depth), p = median(depth))
ggplot(data = summary_diamonds, mapping = aes(x = cut, y = p)) +
geom_pointrange(mapping = aes(ymin = lower, ymax = upper))
关于r - 绘制 geom_pointrange 中每个 x 值的最小值、最大值、中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42045947/