gpt4 book ai didi

r - geom_vline 的行为是否与其他 ggplot geom 的行为不一致?

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

与其他 ggplot geom 相比,geom_vline 似乎在色彩美学方面“表现不佳”。我想弄清楚我是否对 geom_vline 有误解,或者这是否是对 geom_vline 设计的疏忽。

# Fake data for illustration
dat=data.frame(x=rnorm(60), y=rep(LETTERS[1:3],20))

所有这些都按预期工作:

# Density plot of x with vertical median line
ggplot(data=dat) +
geom_density(aes(x=x)) +
geom_vline(aes(xintercept=median(x)))

# Density plot of exp(x) with vertical median line
ggplot(data=dat) +
geom_density(aes(x=exp(x))) +
geom_vline(aes(xintercept=median(exp(x))))

# Separate density plots of exp(x) for each level of y
ggplot(data=dat) +
geom_density(aes(x=exp(x), colour=y))

enter image description here

但是,下面的图的工作方式不同。我希望下图中的第二个 geom_vline 语句为每个级别的 y 包含一条单独的中线。但实际上它只是在 x 的所有值的中位数处添加了一行(事实证明它与第一个 geom_vline 语句执行相同的操作)。

# Separate density plots of x for each level of y
ggplot(data=dat) +
geom_density(aes(x=x, colour=y)) +
geom_vline(aes(xintercept=median(x)), lwd=4, colour="black") +
geom_vline(aes(xintercept=median(x), colour=y), lwd=1)

# Density plot of x, faceted by level of y
ggplot(data=dat) +
geom_density(aes(x=x, colour=y)) +
geom_vline(aes(xintercept=median(x)), lwd=4, colour="black") +
geom_vline(aes(xintercept=median(x), colour=y), lwd=1) +
facet_grid(. ~ y)

enter image description here

geom_vline 的行为似乎与通常的 ggplot 逻辑所预期的不同。例如,如上所示,我可以将数据函数 exp(x) 传递给 geom_density,它会为 的每个级别返回单独的密度图y 当包含颜色美学时。此外,只要没有颜色美感,我就可以将数据函数 exp(x)median(exp(x)) 传递给 geom_vline 并且它的行为也符合预期。但是,当我尝试使用颜色美学或 geom_vline 分面时,它无法为 colour 变量的每个级别提供单独的中线,而是为所有 x 值的中位数。

我知道我可以将预先汇总的数据传递给 geom_vline 以获得我想要的行为(事实上,回答 this SO question 是引发此处讨论的问题的原因),但我正在尝试了解 geom_vline 相对于其他 ggplot geom 的行为是否确实存在不一致。

我是不是遗漏了什么或者 geom_vline 的行为真的与其他 ggplot geom 不同?

最佳答案

“但实际上它只是在所有 x 值的中值处加了一条线。”

是的,您取的是 x 所有值的中位数,这只是一个数字。换句话说,median(x) 是在整个数据集上评估的,而不是针对每个组。您可以在使用 geom_point 而不是 geom_vline 的更简单的绘图中看到相同的行为:

qplot(x, median(x), color=y, data=dat)

Value of x against median(x)

关于r - geom_vline 的行为是否与其他 ggplot geom 的行为不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42727403/

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