【发布时间】:2011-08-09 19:20:58
【问题描述】:
我正在使用 ggplot 的 geom_tile 来绘制由一个因子刻面的二维密度图。每个 facet 的比例从所有数据的最小值到所有数据的最大值,但每个 facet 中的 geom_tile 仅扩展到在该 facet 中绘制的数据范围。
演示问题的示例代码:
library(ggplot2)
data.unlimited <- data.frame(x=rnorm(500), y=rnorm(500))
data.limited <- subset(data.frame(x=rnorm(500), y=rnorm(500)), x<1 & y<1 & x>-1 & y>-1)
mydata <- rbind(data.frame(groupvar="unlimited", data.unlimited),
data.frame(groupvar="limited", data.limited))
ggplot(mydata) +
aes(x=x,y=y) +
stat_density2d(geom="tile", aes(fill = ..density..), contour = FALSE) +
facet_wrap(~ groupvar)
运行代码,您将看到两个方面。一个方面显示了“无限”随机正态分布的密度图。第二个面显示了一个随机法线被截断以位于原点周围的 2x2 正方形内。 “有限”刻面中的 geom_tile 将被限制在这个小盒子内,而不是填充刻面。
last_plot() +
scale_x_continuous(limits=c(-5,5)) +
scale_y_continuous(limits=c(-5,5))
最后三行绘制了具有指定 x 和 y 限制的相同数据,我们看到在这种情况下,没有一个面将切片部分延伸到边缘。
有什么办法可以强制每个facet中的geom_tile延伸到facet的全范围?
【问题讨论】: