ggplot2 使用启发式方法根据数据的推断分辨率确定默认宽度/高度。
在 geom_tile 的代码中(从 ggplot2 3.5.0 开始),我们看到默认宽度由
决定data$width <- data$width %||% params$width %||% resolution(data$x, FALSE, TRUE)
如果我们自己没有指定宽度,我们的数据将进入
ggplot2::resolution
函数,该函数指定
分辨率是相邻像素之间的最小非零距离 价值观。如果只有一个唯一值,则定义分辨率 成为一体。如果 x 是整数向量,则假设它表示一个 离散变量,分辨率为1。
library(ggplot2)
plot_example <- function(a) {
ggplot(data.frame(x = a,
y = sin(1:3) * 10)) +
geom_tile(aes(x,y))+
labs(title = paste("Resolution:", ggplot2::resolution(a, zero = FALSE)))
}
如果我们有像
c(-500, 450, 500)
这样的数据,分辨率将为 50:
plot_example(c(-500, 450, 500))
但是,如果您有像
x = c(-500, 499.9, 500)
这样的数据,分辨率将为 0.1(或接近,由于浮点数),并且可能太小而无法显示在绘图上。
plot_example(c(-500, 499.9, 500))
但是我们可以通过指定对我们的绘图有意义的宽度来克服这个问题,例如
geom_tile(...., width = 50)