R 如何在散点图上覆盖箱线图?

R 如何在散点图上覆盖箱线图?,r,ggplot2,plot,scatter-plot,boxplot,R,Ggplot2,Plot,Scatter Plot,Boxplot,假数据 set.seed( 123) x<-rnorm(1000, mean=60,sd=20) y <- exp(-10 + .95*log(x^3)) + rnorm(1000,mean=1,sd=1) df <- data.frame(x,y) cls.x <- quantile(df$x, seq(.1, .9, by=.1)) df$x.class <- findInterval(df$x, cls.x) df$x.class <- as.fac

假数据

set.seed( 123)
x<-rnorm(1000, mean=60,sd=20)
y <-  exp(-10 +  .95*log(x^3)) + rnorm(1000,mean=1,sd=1)
df <- data.frame(x,y)
cls.x <- quantile(df$x, seq(.1, .9, by=.1))
df$x.class <- findInterval(df$x, cls.x)
df$x.class <- as.factor(df$x.class)
head(df)
也不是这个

boxplot(y~x.class, data=df,xlab="",ylab="",xaxt="n")
points(df$x,df$y,col=3)
使用ggplot,我得到的最接近的结果是使用

library(ggplot2)
ggplot(df,aes(x.class,y))+geom_boxplot() + geom_point()
不幸的是,它没有显示轴的真实可变性。 我尝试使用抖动选项,但无法强制绘图使用X变量的真实可变性

如有任何建议,将不胜感激

Ps:我知道Rlab中的bplot.xy()函数,但是,该函数不允许我更改箱线图的颜色,或者先绘制点

library(Rlab)
bplot.xy( x,y,  N=10)
points( x,y, pch=".", col=3, cex=3)

以下是你想要的吗

library(ggplot2)

ggplot(df, aes(x, y, fill = x.class)) + 
  geom_point(alpha = 0.10) +
  geom_boxplot(alpha = 0.50)  

您的
df$x
从3到124不等,而您的x轴从1到10不等。在基本图形中,可以执行以下操作:

plot(抖动(作为.integer(df$x.class)),df$y,col=3,type=“p”,xlab=“”,ylab=“”,xaxt=“n”)
箱线图(y~x.class,数据=df,xlab=“”,ylab=“”,xaxt=“n”,add=TRUE)
我添加了
jitter
,以帮助打破分布。您也可以尝试
pch=16
使点成为实心,或者使用透明度(例如,
col=“#aaffaa22”
用于点)


您是指积分(df$x.class,df$y)?您的x轴包括1到10(对于
x.class
中的0-9因子),但
x
的范围为3.8到124.8。。。很好。非常感谢@RuiBarradas,这正是我想要实现的。p@ChristianSalas Eljatib很高兴能帮忙。谢谢,@r2evans。我想避免紧张。我只是计算了x.class来绘制箱线图,我知道它们的比例不同。我建议您使用Rui的答案,因为它似乎可以满足您的需要(当然很好!)。在Stack网站上,接受是一个很好的步骤和“礼仪”。谢谢(很高兴你得到了你需要的东西。)
library(ggplot2)

ggplot(df, aes(x, y, fill = x.class)) + 
  geom_point(alpha = 0.10) +
  geom_boxplot(alpha = 0.50)