ggplot框绘制不同的宽度

时间:2019-01-04 16:14:16

标签: r ggplot2

我有一个连续的变量,介于0到1之间,我将其分为不同宽度的箱(所有箱的大小均相等,除了最后一个箱合并了超过阈值的值)。我想做一个盒子图,其中盒子的宽度覆盖箱的x范围。这是一段代码,可以绘制两个图,一个带有等宽的箱,另一个带我的箱。

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处的点较少,因此我想对数据进行分箱(与How to create geom_boxplot with large amount of continuous x-variables中的情况不同)。

谢谢

1 个答案:

答案 0 :(得分:1)

像这样吗?

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

enter image description here

也许是小提琴情节?

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

enter image description here