在 R 中的箱线图中均匀分布数据点(使用 ggplot2)
Evenly distribute data points in boxplot in R (using ggplot2)
我对箱线图中的数据点间距有疑问。我使用以下代码。
DF1 <- data.frame(x = c(1, 2, 3, 4, 7, 11, 20, 23, 24, 25, 30), y = c(3, 6, 12, 13, 17, 22, NA, NA, NA, NA, NA))
library(ggplot2)
library(tidyverse)
n <- 11
DF1 <- as.data.frame(DF1)
DF1 <- reshape2::melt(DF1)
DF1 %>%
group_by(variable) %>%
arrange(value) %>%
mutate(xcoord = seq(-0.25, 0.25, length.out = n())) %>%
ggplot(aes(x = variable, y = value, group = variable)) +
geom_boxplot() +
geom_point(aes(x = xcoord + as.integer(variable)))
结果如下:
对于x,所有的数据点都是从左到右均匀分布的,但是由于y的数据点较少,所以不是从左到右均匀分布的。上面的代码如何修改为均匀 space 输出 y 的数据点?如果有任何建议,我将不胜感激。
我找到了一个有点相似的 post here,但这对我没有帮助。
谢谢。
问题是 y
中的 NA
值。进入长格式后,您可以简单地省略它们:
plot_data = DF1 %>%
na.omit %>% ## add this here
group_by(variable) %>%
arrange(value) %>%
mutate(xcoord = seq(-0.25, 0.25, length.out = n()))
ggplot(plot_data, aes(x = variable, y = value, group = variable)) +
geom_boxplot() +
geom_point(aes(x = xcoord + as.integer(variable)))
我对箱线图中的数据点间距有疑问。我使用以下代码。
DF1 <- data.frame(x = c(1, 2, 3, 4, 7, 11, 20, 23, 24, 25, 30), y = c(3, 6, 12, 13, 17, 22, NA, NA, NA, NA, NA))
library(ggplot2)
library(tidyverse)
n <- 11
DF1 <- as.data.frame(DF1)
DF1 <- reshape2::melt(DF1)
DF1 %>%
group_by(variable) %>%
arrange(value) %>%
mutate(xcoord = seq(-0.25, 0.25, length.out = n())) %>%
ggplot(aes(x = variable, y = value, group = variable)) +
geom_boxplot() +
geom_point(aes(x = xcoord + as.integer(variable)))
结果如下:
对于x,所有的数据点都是从左到右均匀分布的,但是由于y的数据点较少,所以不是从左到右均匀分布的。上面的代码如何修改为均匀 space 输出 y 的数据点?如果有任何建议,我将不胜感激。
我找到了一个有点相似的 post here,但这对我没有帮助。
谢谢。
问题是 y
中的 NA
值。进入长格式后,您可以简单地省略它们:
plot_data = DF1 %>%
na.omit %>% ## add this here
group_by(variable) %>%
arrange(value) %>%
mutate(xcoord = seq(-0.25, 0.25, length.out = n()))
ggplot(plot_data, aes(x = variable, y = value, group = variable)) +
geom_boxplot() +
geom_point(aes(x = xcoord + as.integer(variable)))