我目前正在阅读Hadley Wickham的R for Data Science.在那里,有以下示例:
library(tidyverse) ggplot(data = diamonds) + stat_summary( mapping = aes(x = cut, y = depth), fun.ymin = min, fun.ymax = max, fun.y = median )
现在,有一个问题是如何使用适当的geom_
函数创建相同的图.我看着默认geom
的stat_summary
,它是pointrange
.
所以我尝试了以下方法:
ggplot(data = diamonds) + geom_pointrange(mapping = aes(x = cut, y = depth), stat = "summary")
但我没有得到min
和max
积分的情节.
如何使用geom_pointrange
?获得精确的图?
geom_pointrange
不会自动计算ymin或ymax值.您可以在使用stat = "summary"
时执行此操作geom_pointrange
:
ggplot(data = diamonds) + geom_pointrange(mapping = aes(x = cut, y = depth), stat = "summary", fun.ymin = min, fun.ymax = max, fun.y = median)
我能想到的简单方法就是使用geom_line和stat_summary
ggplot(data = diamonds, mapping = aes(x = cut, y = depth)) + geom_line() + stat_summary(fun.y = "median", geom = "point", size = 3)
这将给出非常相似的情节。
如果我真的想使用geom_pointrange,那么我将首先创建小型数据集。
data = diamonds %>% group_by(cut) %>% summarise(min = min(depth), max = max(depth), median = median(depth)) ggplot(data, aes(x = cut, y = median, ymin = min, ymax = max)) + geom_linerange() + geom_pointrange()
这将生成完全相同的图。希望这可以帮助!