And*_*n21 16 r ggplot2 boxplot
我有一个数据框,其中包含x轴数字箱和跨多个类别的连续y轴数据.最初,我通过制作x轴箱"因子"并绘制熔化数据的箱线图来创建箱线图.可重复的数据:
x <- seq(1,10,by=1)
y1 <- rnorm(10, mean=3)
y2 <- rnorm(10, mean=10)
y3<- rnorm(10, mean=1)
y4<- rnorm(10, mean=8)
y5<- rnorm(10, mean=12)
df <- data.frame(x,y1,y2,y3,y4,y5)
df.m <- melt(df, id="x")
Run Code Online (Sandbox Code Playgroud)
我的代码创建x轴数据作为一个因素:
df.m $ x < - as.factor(df.m $ x)
我的ggplot:
ggplot(df.m, aes(x=x, y=value))+
geom_boxplot(notch=FALSE, outlier.shape=NA, fill="red", alpha=0.1)+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Run Code Online (Sandbox Code Playgroud)
由此产生的情节:
:
问题是我不能使用x轴数字间距,因为x轴被分类为具有相等间距的因子.我希望能够使用像scale_x_continuous这样的东西来操纵轴断裂和间距,例如,间隔为2,而不是每1个盒子图,但是当我尝试用x轴绘制数据时"as.numeric ",我只得到所有数据的一个箱线图:
有什么方法可以获得这种连续观察的箱形图曲线(第一幅图像),同时仍能控制x轴的数字属性?谢谢!
jlh*_*ard 25
这是使用您在Google上发布的原始数据的一种方式 - 实际上这对IMO更有帮助.
ggplot(df, aes(x=CH, y=value,group=CH))+
geom_boxplot(notch=FALSE, outlier.shape=NA, fill="red", alpha=0.2)+
scale_x_log10()
Run Code Online (Sandbox Code Playgroud)
所以,正如@BenBolker在删除答案(??)之前所说的那样,你应该将x-variable(CH
)保留为数字,并group=CH
在调用中设置aes(...)
.
根据您的真实数据,还有另一个问题.你CH
或多或少是对数间隔的,因此有大约1到10之间的点数,等于1到10之间等等.ggplot
想要使盒子的大小相同,所以使用线性x轴,盒子的宽度小于线宽,你根本看不到框.将x轴更改为对数刻度可以或多或少地修复.