gpt4 book ai didi

r - geom_rect + coord_map = 非常慢

转载 作者:行者123 更新时间:2023-12-02 03:34:07 25 4
gpt4 key购买 nike

我正在使用 ggplot2 绘制挪威 map ,其中用红色矩形突出显示感兴趣的区域。如果我省略 geom_rectcoord_map, map 绘制速度会非常快(< 1 秒)。如果我同时使用两者 - 我需要 - 打印和渲染速度非常慢(大约五分钟)。

我认为这与咀嚼有关 - 将矩形投影到新的坐标系上。有办法控制吗?

library(ggplot2)
library(maps)
library(mapdata)


xlim <- c(5, 10)
ylim <- c(60, 62)

norwaymap <- map_data("worldHires", "Norway")
a <- ggplot(norwaymap, aes(x = long, y = lat, group = group)) +
geom_polygon(colour = NA, fill = "grey60") +
geom_rect(xmin = xlim[1], xmax = xlim[2], ymin = ylim[1], ymax = ylim[2],
colour = "red", fill = NA) +
coord_map(xlim = c(3, 33), ylim = c(57, 72))
print(a) # super slow

使用低分辨率 map 可以使 map 绘制速度更快(大约 10 秒)。

最佳答案

无需诉诸墨卡托近似:

library(ggplot2)
library(maps)
library(mapdata)

norwaymap <- map_data("worldHires", "Norway")

xlim <- c(5, 10)
ylim <- c(60, 62)

ggplot() +
geom_map(data=norwaymap, map=norwaymap,
aes(long, lat, map_id=region),
color=NA, fill="grey60") +
geom_rect(data=data.frame(),
aes(xmin=xlim[1], xmax=xlim[2], ymin=ylim[1], ymax=ylim[2]),
color="red", fill=NA) +
coord_map(xlim=c(3, 33), ylim=c(57, 72)) +
ggthemes::theme_map()

enter image description here

另一种选择是使用阿尔伯斯等积圆锥投影(该地区的典型投影):

ggplot() +
geom_map(data=norwaymap, map=norwaymap,
aes(long, lat, map_id=region),
color=NA, fill="grey60") +
geom_rect(data=data.frame(),
aes(xmin=xlim[1], xmax=xlim[2], ymin=ylim[1], ymax=ylim[2]),
color="red", fill=NA) +
ggalt::coord_proj("+proj=aea +lat_1=60 +lat_2=70 +lon_0=18.37",
xlim=c(3, 33), ylim=c(57, 72)) +
ggthemes::theme_map()

enter image description here

这对投影的矩形有一个“缺点”(墨卡托也是如此,只是没有失真)。

无论哪种方式,矩形的魔力都是确保您只绘制一个,就像卢克所说。

关于r - geom_rect + coord_map = 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37640659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com