gpt4 book ai didi

r - 阻止 geom_密度_ridges 显示不存在的尾部值

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

当我使用geom_密度_ridges()时,绘图通常最终会显示数据中不存在的值的长尾。

这是一个例子:

library(tidyverse)
library(ggridges)

data("lincoln_weather")

# Remove all negative values for "Minimum Temperature"
d <- lincoln_weather[lincoln_weather$`Min Temperature [F]`>=0,]

ggplot(d, aes(`Min Temperature [F]`, Month)) +
geom_density_ridges(rel_min_height=.01)

geom_ridgline如您所见,1 月、2 月和 12 月均显示负气温,但数据中根本没有负值。

当然,我可以向 x 轴添加限制,但这并不能解决问题,因为它只是截断了现有的错误密度。

ggplot(d, aes(`Min Temperature [F]`, Month)) +
geom_density_ridges(rel_min_height=.01) +
xlim(0,80)

geom_ridgeline with axis limits现在,该图看起来一月和二月的值为零(没有)。这也使得 12 月 0 度的情况看起来经常发生,而实际上只有 1 天这样。

我该如何解决这个问题?

最佳答案

一种选择是使用 stat_densis() 而不是 stat_desired_ridges()。有些事情 stat_密度() 无法做到,例如绘制垂直线或重叠点,但另一方面它可以做一些 stat_密度_ridges() 的事情无法做到,例如将分布修剪到数据范围。

# Remove all negative values for "Minimum Temperature"
d <- lincoln_weather[lincoln_weather$`Min Temperature [F]`>=0,]

ggplot(d, aes(`Min Temperature [F]`, Month, group = Month, height = ..density..)) +
geom_density_ridges(stat = "density", trim = TRUE)

enter image description here

作为替代方案,您可以画一个点地毯,也许这也能达到您的目的,甚至更好:

ggplot(d, aes(`Min Temperature [F]`, Month)) +
geom_density_ridges(rel_min_height = 0.01, jittered_points = TRUE,
position = position_points_jitter(width = 0.5, height = 0),
point_shape = "|", point_size = 2,
alpha = 0.7)

enter image description here

注意:这两种方法目前无法组合,这需要对统计代码进行一些修改。

关于r - 阻止 geom_密度_ridges 显示不存在的尾部值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49906240/

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