所以我知道更好的方法是使用stat_summary()
函数,但这是为了解决哈德利R数据科学书中提出的问题主要是出于我自己的好奇心。它询问如何转换使用stat_summary()
制作的示例图的代码,以使用geom_pointrange()
生成相同的图。例子是:
ggplot(data = diamonds) +
stat_summary(
mapping = aes(x = cut, y = depth),
fun.ymin = min,
fun.ymax = max,
fun.y = median
)
情节应如下所示:
pointrange plot http://r4ds.had.co.nz/visualize_files/figure-html/unnamed-chunk-35-1.png
我尝试使用以下代码:
ggplot(data = diamonds, mapping = aes(x = cut, y = depth)) +
geom_pointrange(mapping = aes(ymin = min(depth), ymax = max(depth)))
但是,这会在每个剪切类别(即所有ymin
和ymax
' s是一样的)。我也试过传递一个mins和maxs的向量,但ymin
只取我自己能说的单个值。它可能很简单,但我认为人们大多使用stat_summary()
,因为我发现通过Google使用geom_pointrange()
的例子非常少。
答案 0 :(得分:3)
我认为你需要在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))
答案 1 :(得分:1)
geom_pointrange
包含stat
参数,因此您可以内联进行统计转换https://stackoverflow.com/a/41865061