RStudio图形设备对于mac上的空间对象真的很慢
Posted
技术标签:
【中文标题】RStudio图形设备对于mac上的空间对象真的很慢【英文标题】:RStudio graphics device really slow for spatial objects on mac 【发布时间】:2021-04-24 06:38:51 【问题描述】:我最近买了一台新的 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 也需要
>
我使用的是 macOS Big Sur 11.1 RStudio 版本 1.3.1093
(我在这里发布了一些其他与图形相关的模糊问题:quartz device behaving strangely after mac update - R mac,但我不确定这两者是否相关)。
【问题讨论】:
我很想看到这个问题的答案。也只找到了老线程,但是问题在macOS Big Sur上依然存在,R版本4.1.0,terra版本1.4.20,sp版本1.4-6;链接到 GEOS 3.8.1、GDAL 3.2.1、PROJ 7.2.1 【参考方案1】:我遇到了同样的问题。切换到图形设备后端后已修复:“AGG”。
> system.time(plot(mmr))
user system elapsed
0.213 0.019 0.243
我的会话信息:
R version 4.1.1 (2021-08-10)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Big Sur 11.6
RStudio 2021.09.0+351 "Ghost Orchid" Release (077589bcad3467ae79f318afe8641a1899a51606, 2021-09-20) for macOS
Mozilla/5.0 (Macintosh; Intel Mac OS X 11_6_0) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.12.10 Chrome/69.0.3497.128 Safari/537.36
【讨论】:
好的,这似乎也为我解决了这个问题,但我对后端设备的理解非常有限......更改我的后端设备有什么影响吗?感谢您的帮助!【参考方案2】:如果没有 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()
【讨论】:
这样会好一些。 RStudioGD 中的渲染时间为 49 秒,而基础图中的 png 为 0.9 秒。 ggplot 在 system.time() 上说它在 0.002 秒内工作,但是当我实际运行它时,轮廓直到几分钟后才出现在绘图面板中:( 我已经问了一下,看起来像这样是较新的 mac 操作系统的一个更深层次的问题。叹息...... RStudio 1.4 昨天发布。可能想尝试一下。【参考方案3】:我在 mac os 中遇到了同样的问题。我的解决方案是安装 XQuartz (https://www.xquartz.org/),然后使用 x11() 绘制空间对象,但是您需要设置“usePolypath = FALSE”。示例:
library(raster)
fraL1 <- getData('GADM', country='FRA', level=1)
x11()
plot(fraL1, usePolypath = FALSE)
【讨论】:
以上是关于RStudio图形设备对于mac上的空间对象真的很慢的主要内容,如果未能解决你的问题,请参考以下文章
将本地目录中的本地图像包含并调整大小到 Xaringan (remark.js) 演示文稿中...(通过 Mac 上的 Rstudio 使用)
mac格式化移动硬盘的时候,发生错误。MediaKit 报告设备上的空间不足以执行请求的操作。
mac 上格式化磁盘出现MediaKit报告设备上的空间不足以执行请求的解决办法