R ggplot2 geom_tile 值填充不起作用?

问题描述 投票:0回答:1

R我目前正在尝试使用ggplot的geom_tile制作一些数据的热图。

然而,即使轴和图例已根据我的数据正确缩放,图表的内容仍完全为空,这可能是什么原因造成的?Result of graph

r ggplot2 geom-tile
1个回答
0
投票

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)

© www.soinside.com 2019 - 2024. All rights reserved.