我有一个包含大量重叠点的数据集,并使用ggplot创建一个气泡图来显示该数据。我需要在我的绘图上添加条形图,用于x轴上每个组的平均值(值可以是0,1或2)。我曾尝试使用geom_errorbar,但无法使用它来处理我的数据。任何帮助/建议将不胜感激。
以下是我的代码和生成类似虚假数据的脚本:
y <- seq(from=0, to=3.5, by=0.5)
x <- seq(from=0, to=2, by=1)
xnew <- sample(x, 100, replace=T)
ynew <- sample(y, 100, replace=T)
data <- data.frame(xnew,ynew)
data2 <- aggregate(data$xnew, by=list(x=data$xnew, y=data$ynew), length)
names(data2)[3] <- "Count"
ggplot(data2, aes(x = x, y = y)) +
geom_point(aes(size=Count)) +
labs(x = "Copies", y = "Score") +
aes(ymax=..y.., ymin=..y..) +
scale_x_continuous(breaks = seq(0, 2, 1)) +
scale_y_continuous(breaks = seq(0, 3, 0.5)) +
theme(legend.position = "bottom", legend.direction = "horizontal",
axis.line = element_line(size=1, colour = "black"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
axis.text.x = element_text(colour="black", size = 10),
axis.text.y = element_text(colour="black", size = 10))
答案 0 :(得分:2)
我不完全确定我正确理解你的问题。在我看来,除了气泡之外,您还希望将y
的每个值的x
的平均值可视化为某种条形。 (你提到错误栏,但似乎这不是一个要求,而是你尝试过的。我将使用geom_col()
代替。)
我假设你想要计算y
以上的平均值,即sum(y * Count) / sum(Count)
。您可以使用dplyr
:
data2_mean
## # A tibble: 3 × 2
## x y
## <dbl> <dbl>
## 1 0 1.833333
## 2 1 1.750000
## 3 2 2.200000
创建绘图时,我使用data2
作为geom_point()
和data2_mean
的数据集作为geom_col()
的数据集。将条形放在第一位是很重要的,因为气泡应位于条形图的顶部。
ggplot() +
geom_col(aes(x = x, y = y), data2_mean, fill = "gray60", width = 0.7) +
geom_point(aes(x = x, y = y, size = Count), data2) +
labs(x = "Copies", y = "Score") +
scale_x_continuous(breaks = seq(0, 2, 1)) +
scale_y_continuous(breaks = seq(0, 3, 0.5)) +
theme(legend.position = "bottom", legend.direction = "horizontal",
axis.line = element_line(size=1, colour = "black"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
axis.text.x = element_text(colour="black", size = 10),
axis.text.y = element_text(colour="black", size = 10))
与代码相比,我改变的所有内容都在scale_x_continuous()
之前。这产生了以下图: