我对反复出现的问题感到惊讶 size vector cannot be allocated
in geom_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
转换和公差控制)。
请问,我有什么解决办法吗?
错误附带的警告提供了信息
另外: 警告消息:
1:光栅像素的水平间隔不均匀,并且会发生偏移。考虑使用 geom_tile() 代替。
2:光栅像素的垂直间隔不均匀,并且会发生偏移。考虑使用 geom_tile() 代替。
当数据具有虚假精度时会发生这种情况,因此geom_raster
尝试制作一个非常精细的网格,该网格使用大量的内存。
解决方案是将数据四舍五入到适当的精度。
library(tidyverse)
ras_df <- ras_df %>% mutate(across(c(latitude, longitude), round, digits = 4))
那么情节就很好了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)