我正在使用ggplot的geom_tile函数制作一个2D密度图,通过一个因素进行分组。每个分组的比例尺从所有数据的最小值到所有数据的最大值,但是每个分组中的geom_tile只能延伸到该分组中绘制的数据范围。
以下是示例代码,它展示了这个问题:
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轴极限绘制相同的数据,我们可以看到在这种情况下,两个面板都没有将瓷砖区域延伸到边缘。
有什么方法可以强制每个面板中的geom_tile扩展到整个面板的范围吗?