如何解决相同值的 geom_col() 和 geom_point() 之间的差异
所以,我试图在此处绘制随时间推移的缺失值(纵向数据)。 我更愿意将它们放在 geom_col() 中,以便在之后填充某些处理的颜色。但是出于某种奇怪的原因, geom_col() 给了我奇怪的值,而 geom_point() 使用相同的函数给了我正确的值。我想弄清楚为什么会发生这种情况。看一下y轴。 免责声明:
- 我知道缺失值会在第 19-20 天消失。这就是我制作情节的原因。
- 对情节的布局感到抱歉。还没有打磨。
对于 geom_point:
gaussian_transformed %>% group_by(factor(time)) %>% mutate(missing = sum(is.na(Rose_width))) %>% ggplot(aes(x = factor(time),y = missing)) + geom_point()
图片:geom_point
对于 geom_col:
gaussian_transformed %>% group_by(factor(time)) %>% mutate(missing = sum(is.na(Rose_width))) %>% ggplot(aes(x = factor(time),y = missing)) + geom_col()
图片:geom_col
解决方法
所以经过一些挖掘:
发生的情况是 geom_col() 函数总结了所有缺失的值,而 geom_point() 没有。因此 y 的值很大。为什么会这样,我不知道。但是,执行以下操作对我来说很好:
gaussian_transformed$time <- as.factor(gaussian_transformed$time)
gaussian_transformed %>% group_by(time) %>% summarise(missing = sum(is.na(Rose_width))) -> gaussian_transformed
gaussian_transformed %>% ggplot(aes(x = time,y = missing)) + geom_col(fill = "blue",alpha = 0.5) + theme_minimal() + labs(title = "Missing values in Gaussian Outcome over the days",x = "Time (in days)",y = "Amount of missing values") + scale_y_continuous(breaks = seq(0,10,1))
随着情节:GaussianMissing
,问题在于您正在使用 mutate
并为您的组创建多行。您看不到,但是您的 geom_point 图中会有很多点重叠。
一种方法是使用 summarise
,或者您使用 distinct
比较
library(tidyverse)
msleep %>% group_by(order) %>%
mutate(missing = sum(is.na(sleep_cycle))) %>%
ggplot(aes(x = order,y = missing)) +
geom_point()
这些点看起来很难看,因为有很多过度绘制。
msleep %>% group_by(order) %>%
mutate(missing = sum(is.na(sleep_cycle))) %>%
distinct(order,.keep_all = TRUE) %>%
ggplot(aes(x = order,y = missing)) +
geom_col()
msleep %>% group_by(order) %>%
mutate(missing = sum(is.na(sleep_cycle))) %>%
ggplot(aes(x = order,y = missing)) +
geom_col()
由 reprex package (v2.0.0) 于 2021 年 6 月 2 日创建
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。