首页 > 解决方案 > 相同值的 geom_col() 和 geom_point() 之间的差异

问题描述

因此,我试图在此处绘制随时间推移的缺失值(纵向数据)。我更喜欢将它们放在 geom_col() 中,以便之后填充某些处理的颜色。但是由于一些奇怪的原因,geom_col() 给了我奇怪的值,而 geom_point() 使用相同的函数给了我正确的值。我试图弄清楚为什么会发生这种情况。看一下y轴。免责声明:

对于 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

在此处输入图像描述

标签: rggplot2dplyrmissing-data

解决方案


问题是您正在mutate为您的组使用和创建几行。你看不到这一点,但你的 geom_point 图中会有很多重叠的点。

一种方法是使用summarise,或者使用distinct Compare

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 包创建于 2021-06-02 (v2.0.0 )


推荐阅读