geom_raster在x轴值超过2^15时失效的问题排查求助
geom_raster在x轴值超过2^15-1时无法正常显示(无报错)
在Ubuntu 22.04系统上,发现geom_raster在x轴最大值超过2^15-1(即32767)时无法生成正常图形,仅显示空的ggplot,且无任何报错信息。之前曾成功绘制过同类图形,不清楚环境变化导致失效的原因。
复现代码
以下代码可复现问题:第一个绘图生成空的ggplot,第二个正常显示:
library(ggplot2) df <- expand.grid(y = 0:4, x = 1:2^(15)) df$fill <- rnorm(2^15) # Plot 1, 失效(仅显示空ggplot) ggplot(df) + geom_raster(aes(x = x, y = y, fill = fill)) # Plot 2, 正常显示 ggplot(df[1:(2^15 - 1),]) + geom_raster(aes(x = x, y = y, fill = fill))
图形表现
- Plot 1(x值范围1-32768):空的ggplot画布,无任何可视化内容
- Plot 2(x值范围1-32767):正常显示预期的热力图
当前环境信息
运行上述代码的sessionInfo()输出:
R version 4.3.3 (2024-02-29) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 22.04.4 LTS Matrix products: default BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0 LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0 locale: [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8 [5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 LC_PAPER=en_GB.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C time zone: Europe/Paris tzcode source: system (glibc) attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] ggplot2_3.5.1 loaded via a namespace (and not attached): [1] labeling_0.4.3 utf8_1.2.4 R6_2.5.1 tidyselect_1.2.1 farver_2.1.1 magrittr_2.0.3 [7] gtable_0.3.5 remotes_2.5.0 glue_1.7.0 tibble_3.2.1 pkgconfig_2.0.3 generics_0.1.3 [13] dplyr_1.1.4 lifecycle_1.0.4 cli_3.6.2 fansi_1.0.6 scales_1.3.0 grid_4.3.3 [19] vctrs_0.6.5 withr_3.0.0 compiler_4.3.3 rstudioapi_0.16.0 tools_4.3.3 pillar_1.9.0 [25] munsell_0.5.1 colorspace_2.1-0 rlang_1.1.3
已尝试的操作
- 更换不同R版本和ggplot2版本,问题未解决
- 同事在Windows系统(R 4.2.3和4.4.0版本)运行相同代码可正常显示
- 可通过
geom_tile规避问题,但希望解决geom_raster的失效问题并了解原因,寻求相关建议
内容的提问来源于stack exchange,提问作者Rémi Lemaire-Patin
相关产品推荐
相关产品推荐

