【问题标题】:Problem with geom_raster size vector cannot be allocated无法分配 geom_raster 大小向量的问题
【发布时间】:2021-08-15 20:04:03
【问题描述】:

size vector cannot be allocatedgeom_raster 函数中反复出现的问题让我感到惊讶。这个问题发生在小数据集上,在我的例子中是 1559 个观察值。我尝试这样做:

# Read the raster in data frame format
ras_df<-read.csv("https://raw.githubusercontent.com/Leprechault/trash/main/myraster_df.csv")
str(ras_df)
#'data.frame':  1559 obs. of  3 variables:
# $ cc       : num  65 85.6 82.7 85.6 89.4 ...
# $ longitude: num  -50.6 -50.6 -50.6 -50.6 -50.6 ...
# $ latitude : num  -24.2 -24.2 -24.2 -24.2 -24.2 ...

# Representation
ggplot() +
  geom_raster(data = ras_df , aes(x = longitude, y = latitude, fill = cc)) + 
  scale_fill_gradientn(name="Canopy cover",colours = rev(terrain.colors(100)))+
  xlab("longitude") + ylab("latitude") +
  theme_bw() + 
  coord_quickmap() +
  theme(panel.border = element_blank(), panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"),
text=element_text(size=16,  family="serif"),legend.position="bottom")
#
#
#Error: 20254.0 Gb size vector cannot be allocated

但如果我使用普通的plot() 函数,这不会发生,但我会寻找更漂亮的表示,如ggplot2 输出。一些带有一些解决方案的帖子对我来说效果不佳(例如SpatialPixelsDataFrame 转换和容差控制)。

请问有什么办法可以解决吗?

【问题讨论】:

    标签: r ggplot2 raster sf r-raster


    【解决方案1】:

    错误附带的警告信息丰富

    另外:警告消息:
    1:光栅像素以不均匀的水平间隔放置,并且会移动。考虑改用 geom_tile()。
    2:光栅像素以不均匀的垂直间隔放置,会发生偏移。考虑改用 geom_tile()。

    当数据具有虚假精度时会发生这种情况,因此geom_raster 尝试创建一个非常精细的网格,该网格使用大量内存。

    解决方案只是将数据四舍五入到适当的精度。

    library(tidyverse)
    ras_df <- ras_df %>% mutate(across(c(latitude, longitude), round, digits = 4))
    

    然后情节就可以正常工作了。

    【讨论】:

    • 好@Richard Telford!!
    猜你喜欢
    • 2022-06-21
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2022-10-22
    • 2011-09-06
    • 2021-04-03
    相关资源
    最近更新 更多