【发布时间】:2020-10-10 19:26:06
【问题描述】:
假数据
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)
以下都不行
plot(df$x,df$y,col=3)
par(new=T)
boxplot(y~x.class, data=df,xlab="",ylab="",xaxt="n")
也不是这个
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()
不幸的是,它没有显示轴的真实可变性。 我尝试使用 jitter 选项,但无法强制绘图使用 X 变量的真实可变性
非常感谢任何建议。
Ps:我知道 Rlab 中的 bplot.xy() 函数,但是,该函数不允许我更改箱线图的颜色,或者先绘制点。
library(Rlab)
bplot.xy( x,y, N=10)
points( x,y, pch=".", col=3, cex=3)
【问题讨论】:
-
您的意思是不是
points(df$x.class, df$y)?您的 x 轴包括 1 到 10(对于x.class中的 0-9 因子),但您的x范围从 3.8 到 124.8 ......远离屏幕。
标签: r ggplot2 plot scatter-plot boxplot