我最近得到了一个新的macbook pro,它有一些与R图形相关的问题。在绘制sf对象时,R的工作速度非常慢。我找到了一个关于这个问题的几年前的帖子(这里:https://github.com/rstudio/rstudio/issues/3866),但没有提出任何解决方案。作为参考,RStudioGD绘制对象的速度比pdf慢300倍,这让我抓狂。在这里分享上面链接中的可重现示例(尽管系统时间号是我的):
从上面的链接复制<<=:==>>
我想绘制在这里找到的缅甸的shapefile:
https://gadm.org/download_country_v3.html
library(rgdal)
library(sp)
tdir = tempdir()
get_poly = function() {
tmp = tempfile(tmpdir = tdir)
download.file(
'https://biogeo.ucdavis.edu/data/gadm3.6/shp/gadm36_MMR_shp.zip',
tmp
)
unzip(tmp, exdir = tdir)
readOGR(tdir, 'gadm36_MMR_0', stringsAsFactors = FALSE)
}用RStudioGD绘制要比pdf慢得多:
mmr = get_poly()
system.time(plot(mmr))
# user system elapsed
# 128.162 0.510 129.271
unlink(tdir, recursive = TRUE)重新启动R以清除缓存/开销,然后再次运行:
mmr = get_poly()
tpdf = tempfile(tmpdir = tdir, fileext = 'pdf')
system.time({
pdf(tpdf)
plot(mmr)
dev.off()
})
# user system elapsed
# 0.423 0.027 0.460
unlink(tdir, recursive = TRUE)所以使用外部设备大约要快300倍…有什么想法吗?
png也只需不到1秒
来自链接===>>的<<=结束拷贝
我使用的是macOS Big Sur 11.1 RStudio版本1.3.1093
(我在这里发布了一些与图形相关的模糊问题:quartz device behaving strangely after mac update - R mac,但我不确定这两者是否相关)。
发布于 2021-01-21 09:47:20
我不能在没有mac的情况下重现这个问题,但你可以试着把文件作为sf对象而不是SpatialPolygonsDataFrame来读取。
使用sf::read_sf()将返回一个sf对象。readOGR()函数返回较旧(且更难使用)的sp对象类型。
library(sf)
library(ggplot2)
# Change the path to your downloaded / unzipped location
mmr <- read_sf('Downloads/delete_mmr/gadm36_MMR_0.shp')
head(mmr)Simple feature collection with 1 feature and 2 fields
geometry type: MULTIPOLYGON
dimension: XY
bbox: xmin: 92.1725 ymin: 8.824445 xmax: 101.1768 ymax: 28.54326
geographic CRS: WGS 84
# A tibble: 1 x 3
GID_0 NAME_0 geometry
<chr> <chr> <MULTIPOLYGON [°]>
1 MMR Myanmar (((97.79915 8.83028, 97.79944 8.830002, 97.79972 8.830002, 97.8 8.829722, 97.80222 8...#base plot:
plot(mmr)

# ggplot2 (recommended)
ggplot(mmr) + geom_sf()

https://stackoverflow.com/questions/65800377
复制相似问题