使用 ggplot,如何在单个面上使用多个 bin 宽度
Using ggplot, how do I use multiple bin widths on a single facet
我想在 ggplot 中制作一个 2x2 facet_grid(使用 geom_bin2d),我可以在其中按构面行或列独立指定 bin 宽度。
示例数据如下:
x=runif(100,0,100)
y=runif(100,0,100)
topStrings=c("t1","t2")
sideStrings=c("s1","s2")
d=data.frame(cbind(x,y,top=sample(topStrings,100,replace=T),side=sample(sideStrings,100,replace=T)))
这将生成 100 行 (x,y) 元组,每个元组分类两次(一个 s 和一个 t)。有些人建议您可以简单地对数据的每个子集调用 geom_bin2d 并分配一个 bin 宽度,如下所示:
ggplot(d, aes(x=x,y=y))+
geom_bin2d(data=subset(d, side="s1"), binwidth = c(10,10))+
geom_bin2d(data=subset(d, side="s2"), binwidth = c(10,1))+
facet_grid(side~top,scales="free_y")
根据我的想法,这应该显示顶行 (s1) 的 bin 大于底部 (s2) 的 bin。但这似乎不起作用。似乎整个图只显示了最大的 bin 大小。关于如何做到这一点有什么建议吗?
谢谢
我通过使用 stat_bin2d() 来回避问题。我不确定所有差异,但在这里您指定了 bin 计数而不是 bin 宽度。我可以让 bin 计数始终保持不变。
我想在 ggplot 中制作一个 2x2 facet_grid(使用 geom_bin2d),我可以在其中按构面行或列独立指定 bin 宽度。
示例数据如下:
x=runif(100,0,100)
y=runif(100,0,100)
topStrings=c("t1","t2")
sideStrings=c("s1","s2")
d=data.frame(cbind(x,y,top=sample(topStrings,100,replace=T),side=sample(sideStrings,100,replace=T)))
这将生成 100 行 (x,y) 元组,每个元组分类两次(一个 s 和一个 t)。有些人建议您可以简单地对数据的每个子集调用 geom_bin2d 并分配一个 bin 宽度,如下所示:
ggplot(d, aes(x=x,y=y))+
geom_bin2d(data=subset(d, side="s1"), binwidth = c(10,10))+
geom_bin2d(data=subset(d, side="s2"), binwidth = c(10,1))+
facet_grid(side~top,scales="free_y")
根据我的想法,这应该显示顶行 (s1) 的 bin 大于底部 (s2) 的 bin。但这似乎不起作用。似乎整个图只显示了最大的 bin 大小。关于如何做到这一点有什么建议吗?
谢谢
我通过使用 stat_bin2d() 来回避问题。我不确定所有差异,但在这里您指定了 bin 计数而不是 bin 宽度。我可以让 bin 计数始终保持不变。