gpt4 book ai didi

r - 将额外的参数传递给 stat 函数

转载 作者:行者123 更新时间:2023-12-04 08:34:41 25 4
gpt4 key购买 nike

我正在学习 R 和 ggplot2。根据说明,geom 和 stat 通常可以互换,因为 geom 具有默认 stat,而 stat 具有默认 geom。
我的练习是以 3 种方式创建绘图:使用 stat、手动和使用 geom_pointrange .我被困在第三部分:

library("tidyverse")

# With stat_summary
ggplot(data = diamonds) +
stat_summary(
mapping = aes(x = cut, y = depth),
fun.min = min,
fun.max = max,
fun = median
)

# Manually
diamonds_summary = diamonds %>%
group_by(cut) %>%
summarize(p = median(depth), lower = min(depth), upper = max(depth))

ggplot(diamonds_summary) +
geom_pointrange(
mapping = aes(x = cut, y = p, ymin = lower, ymax = upper)
)

# With geom_pointrange and stat
ggplot(data = diamonds) +
geom_pointrange(
mapping = aes(x = cut, y = median(depth)),
stat = "summary"
)
# Warning: No summary function supplied, defaulting to `mean_se()`
如何将两个汇总函数(最小值和最大值)传递给 stat 标识的函数参数?
所有三种解决方案都应产生以下输出:
enter image description here

最佳答案

当您指定时 stat="summary" ,它仍然需要知道如何总结你的值(value)观。默认是使用带有标准误差的平均值。但是您需要具有最小值和最大值的中位数。您可以编写自己的汇总函数

median_min_max <- function(x) {
data.frame(y=median(x), ymin=min(x), ymax=max(x))
}
然后通过 fun.data= 将其传递到您的 pointrange 层范围。
ggplot(data = diamonds) +
geom_pointrange(
mapping = aes(x = cut, y = depth),
stat = "summary", fun.data = median_min_max
)
这将为您提供一个与您根据汇总数据创建的图相匹配的图。 ggplot确实有 median_hilow汇总函数,但使用 Hmisc::smedian.hilow使用基于置信区间而不是最小值/最大值的分位数的函数。

关于r - 将额外的参数传递给 stat 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64851123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com