相同值的 geom_col() 和 geom_point() 之间的区别
Difference between geom_col() and geom_point() for same value
所以,我试图在这里绘制缺失值随着时间的推移(纵向数据)。
我更愿意将它们放在 geom_col() 中,以便之后填充某些处理的颜色。但是由于某些奇怪的原因,geom_col() 给了我奇怪的值,而 geom_point() 使用相同的函数给了我正确的值。我正在努力思考为什么会这样。看看y-axis。
免责声明:
- 我知道缺失值会在第 19-20 天消失。这就是我制作情节的原因。
- 对剧情的lay-out感到抱歉。还没打磨
对于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-06-02
所以,我试图在这里绘制缺失值随着时间的推移(纵向数据)。 我更愿意将它们放在 geom_col() 中,以便之后填充某些处理的颜色。但是由于某些奇怪的原因,geom_col() 给了我奇怪的值,而 geom_point() 使用相同的函数给了我正确的值。我正在努力思考为什么会这样。看看y-axis。 免责声明:
- 我知道缺失值会在第 19-20 天消失。这就是我制作情节的原因。
- 对剧情的lay-out感到抱歉。还没打磨
对于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-06-02