R:ggplot2点范围示例

时间:2017-01-25 11:33:24

标签: r ggplot2 machine-learning

我目前正在阅读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")

但我没有在情节上得到minmax点。

如何使用geom_pointrange

获取确切的图表

3 个答案:

答案 0 :(得分:11)

geom_pointrange不会自动计算ymin或ymax值。您仍然可以使用stat = "summary"执行此操作:<{1}}:

geom_pointrange

答案 1 :(得分:4)

我能想到的简单方法就是使用geom_line和stat_summary

 ggplot(data = diamonds, mapping = aes(x = cut, y = depth)) +
     geom_line() +
     stat_summary(fun.y = "median", geom = "point", size = 3)

这将给出非常相似的情节。 enter image description here

如果我真的想使用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()

这将生成完全相同的图。希望这可以帮助!  enter image description here

答案 2 :(得分:4)

我已经三年了,我也有同样的疑问,但是这里没有一个解决方案对我有用。通过此代码,我能够实现所需的输出(只是为了帮助那些忙碌的人):

ggplot(data = diamonds) +
  geom_pointrange(
    mapping = aes(x = cut, y = depth),
    stat = "summary",
    fun.min = min,
    fun.max = max,
    fun = median
  )

enter image description here