R 带有ggplot的气泡图上的每组平均值
我有一个有很多重叠点的数据集,用ggplot创建了一个气泡图来显示数据。我需要在绘图上为x轴上每组的平均值添加条形图(值可以是0、1或2)。我曾尝试使用geom_errorbar,但未能使其与我的数据一起工作。如有任何帮助/建议,将不胜感激 以下是我的代码和脚本,用于生成类似的伪数据:R 带有ggplot的气泡图上的每组平均值,r,ggplot2,R,Ggplot2,我有一个有很多重叠点的数据集,用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) y
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))
y这就是你想要的吗?我首先使用dplyr
包计算了组级平均值,然后使用geom_段
将线段添加到绘图中:
library(ggplot2)
library(dplyr)
data2 <- data2 %>% group_by(x) %>% mutate(mean.y = mean(y))
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)) +
geom_segment(aes(y = mean.y, yend = mean.y, x = x -0.25, xend = x + 0.25))
库(ggplot2)
图书馆(dplyr)
数据2%组_由(x)%>%突变(平均值y=平均值(y))
ggplot(数据2,aes(x=x,y=y))+
几何点(aes(大小=计数))+
实验室(x=“复印件”,y=“分数”)+
aes(ymax=…y..,ymin=…y..)+
比例x连续(中断=顺序(0,2,1))+
连续刻度(断开=顺序(0,3,0.5))+
主题(legend.position=“底部”,legend.direction=“水平”,
轴线=元素线(尺寸=1,颜色=“黑色”),
panel.grid.major=元素_blank(),
panel.grid.minor=元素_blank(),
panel.border=元素_blank(),
panel.background=元素_blank(),
axis.text.x=元素\文本(color=“black”,size=10),
axis.text.y=元素\文本(color=“black”,size=10))+
geom_段(aes(y=mean.y,yend=mean.y,x=x-0.25,xend=x+0.25))
我不能完全肯定我是否正确理解了你的问题。在我看来,除了气泡之外,您还希望将y
的每个x
值的平均值可视化为某种条形图。(您提到了错误条,但这似乎不是一个要求,而是您已经尝试过的。我将使用geom\u 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
与您的代码相比,我更改的所有内容都出现在scale\u x\u continuous()
之前。这将生成以下绘图:
这正是我想要做的。我只需要在代码中创建count对象的部分添加回去。非常感谢。那不是我想要的。我需要一个更薄的酒吧在平均。不过,谢谢你的意见。我感谢你的建议。
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))