r - 绘制 geom_pointrange 中每个 x 值的最小值、最大值、中位数

标签 r plot ggplot2

所以我知道解决这个问题的更好方法是使用 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
  )

情节应该是这样的:

pointrange plot
(来源:had.co.nz)

我尝试过使用以下代码:
ggplot(data = diamonds, mapping = aes(x = cut, y = depth)) +
  geom_pointrange(mapping = aes(ymin = min(depth), ymax = max(depth)))

enter image description here

但是,这绘制了每个切割类别中所有深度值的最小值和最大值(即,所有 yminymax 都是相同的)。我也尝试过传递最小值和最大值的向量,但是 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))

enter image description here

关于r - 绘制 geom_pointrange 中每个 x 值的最小值、最大值、中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42045947/

相关文章:

r - 删除任何重复项及其对

r - R 中的字符比较如何工作?

r - 将 MATLAB 脚本集成到 R Markdown 文档中

r - 为 plotly 图例添加标题

python - Matplotlib:在同一轴位置显示次要刻度和主要刻度

r - ggplot stat_smooth : change look of multiple bands

r - 在我的主文档中包含几个 tex 格式的表格

python - 在条形图上叠加箱线图 matplotlib/python

r - 使用 ggplot 和 gtable 对齐多个图

r - 如何在R中的ggplot中添加辅助Y轴?