R用ggplot2用尽内存绘制数据帧

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

我正在具有8Gb RAM的Dell XPS笔记本电脑的Fedora 31上运行R。我试图使用ggplot2绘制this GeoTIFF,以便可以使用已经用ggplot2编写的代码覆盖其他数据。我在使用R中的栅格数据方面一直遵循this lesson的要求。将TIFF转换为RasterLayer转换为数据帧后,使用ggplot2加载数据帧时,R程序将失败,仅输出“ Killed”并退出。] >

这里是产生此错误的最小代码示例:

library(tidyverse)
library(raster)
library(rgdal)

afg_pop <- raster("afg_ppp_2020.tif")
pop_df <- as.data.frame(afg_pop, xy = TRUE)

ggplot() +
    # This is the line that results with the error: "Killed"
    geom_raster(data = pop_df , aes(x = x, y = y, fill = afg_ppp_2020))

正在运行dmesg显示R用完了内存:

 [20563.603882] Out of memory: Killed process 42316 (R) total-vm:11845908kB, anon-rss:6878420kB, file-rss:4kB, shmem-rss:0kB, UID:1000 pgtables:19984kB oom_score_adj:0

我很难相信,即使使用一个数据文件,如此大的R也会耗尽处理它所需的内存。为什么R需要那么多内存来执行此任务,更重要的是,我可以使用什么其他方法来绘制此数据,最好使用ggplot2?]

我对R还是比较陌生,所以如果我忽略这里的明显内容,请原谅我。任何帮助,将不胜感激!

我正在具有8Gb RAM的Dell XPS笔记本电脑的Fedora 31上运行R。我试图使用ggplot2绘制此GeoTIFF,以便可以使用已经用ggplot2编写的代码覆盖其他数据。我有...

r linux ggplot2 r-raster
1个回答
0
投票

我无法说出ggplot的存储要求,但是数据的空间分辨率很高(〜90m)。要求ggplot绘制10955(行)* 17267(列)= 189,159,985像素没有意义,因为您将看不到它们(除非您正在打印广告牌)。因此,一个简单的解决方法是获取常规样本,或汇总

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