首页 > 解决方案 > ggplot box plot不同的宽度

问题描述

我有一个介于 0 和 1 之间的连续变量,我将其分箱到不等宽度的箱中(所有箱的大小都相同,除了最后一个组合超过阈值的值)。我想制作一个箱形图,其中箱子的宽度覆盖箱子的 x 范围。这是一段代码,它制作了两个绘图,一个具有相等宽度的 bin,一个具有我的 binning。

require(ggplot2)
x<-runif(100,0,1)
y<-ifelse(x<0.3,2*x,0.75)+runif(100,0,.15)

xbin <- cut(x = x, breaks = seq(0,1,0.1),include.lowest = T,labels=seq(0.05,0.95,0.1) )
df<-data.frame(x=x,y=y,xbin=xbin)
ggplot(df,aes(x=xbin,y=y))+geom_boxplot()

xbin <- cut(x = x, breaks = c(seq(0,0.3,0.1),1),include.lowest = T,labels=c(seq(0.05,0.25,0.1),">3") )
df<-data.frame(x=x,y=y,xbin=xbin)
ggplot(df,aes(x=xbin,y=y))+geom_boxplot()

我希望最后一个盒子占据所有合并的垃圾箱的空间。恐怕该图具有误导性,因为最后一个框涵盖了更大的 x 范围。答案可能是有更好的数据呈现方式。我的真实数据略微集中在 0 和 1 处,0.5 附近的点较少,所以我想对数据进行分箱(与如何使用大量连续 x 变量创建 geom_boxplot 中的情况不同)。

谢谢

标签: rggplot2

解决方案


像这样?

ggplot( data = df, aes( x = x, y = y, colour = xbin ) ) + geom_boxplot()

在此处输入图像描述

也许是小提琴情节?

ggplot( data = df, aes( x = x, y = y, colour = xbin)) + geom_violin() + geom_point( alpha = 0.5 )

在此处输入图像描述


推荐阅读