R:ggplot2 点范围示例
Posted
技术标签:
【中文标题】R:ggplot2 点范围示例【英文标题】:R: ggplot2 pointrange example 【发布时间】:2017-06-10 13:45:05 【问题描述】:我目前正在阅读 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_
函数创建相同的图。我查看了stat_summary
的默认geom
,它是pointrange
。
所以我尝试了以下方法:
ggplot(data = diamonds) + geom_pointrange(mapping = aes(x = cut, y = depth), stat = "summary")
但我没有得到情节上的min
和max
点。
如何使用geom_pointrange
获得准确的绘图?
【问题讨论】:
我也在读那本书,我也有同样的问题。 *** 处于最佳状态。 【参考方案1】: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)
【讨论】:
所以我缺少的只是最后 3 个参数。【参考方案2】:我能想到的简单方法就是使用 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()
这将生成完全相同的图。希望这可以帮助!
【讨论】:
谢谢。第一个选项看起来不错,但问题指出不应该使用stat_summary
。您的第二个选项也很好,但它使用了本书后面部分中教授的技术。那么还有其他方法吗?【参考方案3】:
我在未来三年,我也有同样的疑问,但这里没有一个解决方案对我有用。我能够使用此代码实现所需的输出(只是为了帮助我的时间的人们):
ggplot(data = diamonds) +
geom_pointrange(
mapping = aes(x = cut, y = depth),
stat = "summary",
fun.min = min,
fun.max = max,
fun = median
)
【讨论】:
感谢您的更新。这些论点一定在过去三年中的某个时候被重新命名。它甚至没有说这已被弃用 - ggplot2 3.3.0 没有问题,伙计! :D以上是关于R:ggplot2 点范围示例的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化(facet图)使得第一个子图的坐标轴范围一致
R语言ggplot2可视化:ggplot2可视化时间序列数据并在末尾数据点添加数值标签(number label)
R语言ggplot2可视化分面图(faceting): ggplot2可视化分面图(facet_wrap)并设置不同的分面使用不同的坐标轴数值范围以及不同的轴标签断点间隔breaks