R:ggplot2点范围示例

chi*_*n s 15 r machine-learning ggplot2

我目前正在阅读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
)
Run Code Online (Sandbox Code Playgroud)

现在,有一个问题是如何使用适当的geom_函数创建相同的图.我看着默认geomstat_summary,它是pointrange.

所以我尝试了以下方法:

ggplot(data = diamonds) + geom_pointrange(mapping = aes(x = cut, y = depth), stat = "summary")
Run Code Online (Sandbox Code Playgroud)

但我没有得到minmax积分的情节.

如何使用geom_pointrange?获得精确的图?

Ben*_*son 16

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)
Run Code Online (Sandbox Code Playgroud)


Jen*_*tat 6

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

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

这将给出非常相似的情节。 在此处输入图片说明

如果我真的想使用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()
Run Code Online (Sandbox Code Playgroud)

这将生成完全相同的图。希望这可以帮助! 在此处输入图片说明


小智 5

我在未来三年,我也有同样的疑问,但这里的解决方案都没有对我有用。我能够使用此代码实现所需的输出(只是为了帮助我的时间的人们):

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

在此处输入图片说明