缩短shp贴图choropleth的处理时间

缩短shp贴图choropleth的处理时间,r,plot,geolocation,maps,shapefile,R,Plot,Geolocation,Maps,Shapefile,我正在制作一张阿根廷的choropleth地图,我将在其中绘制一些数据 我可以毫无问题地把地图放上去,还可以在上面绘制一些数据。例如: 问题是我认为R渲染地图的质量太高(我不需要),处理时间太长。(~3分钟)来展示那张笑脸。这是我使用的代码 arg_shp <- readOGR("ARG_adm_shp/ARG_adm1.shp", "ARG_adm1") puntos <- read.csv("puntos.csv", sep = ",", header = T) arg_

我正在制作一张阿根廷的choropleth地图,我将在其中绘制一些数据

我可以毫无问题地把地图放上去,还可以在上面绘制一些数据。例如:

问题是我认为R渲染地图的质量太高(我不需要),处理时间太长。(~3分钟)来展示那张笑脸。这是我使用的代码

arg_shp <- readOGR("ARG_adm_shp/ARG_adm1.shp", "ARG_adm1")


puntos <- read.csv("puntos.csv", sep = ",", header = T)

arg_pv <- fortify(arg_shp, region = "NAME_1")

gg <- ggplot() 
gg <- gg + geom_map(data=arg_pv, map=arg_pv, 
                    aes(long, lat, map_id=id),
                    color="#2b2b2b", size=0.15, fill=NA)
gg <- gg + coord_map()
gg <- gg + ggthemes::theme_map()



gg + geom_map(data = puntos, aes(map_id = Provincia, fill = Puntos), 
              map = arg_pv)
在尝试了一些数据之后,我清楚地意识到,使处理耗时较长的代码显然是错误的

扩大限制

As正在获取强化表中所有259k数据点的信息


有什么想法可以解决这个问题吗?

更新了ggplot2映射“工作”的新方法

这:


试着按照上面的习惯用法和你正在做的事情做对比,或者把
dput(punto)
的输出放到你的问题中,这样问题就可以重现了。另外:在您的问题中继续包含整个RStudio窗口实际上既没有帮助,也没有减少。

更新了ggplot2映射“工作”的新方式

这:


试着按照上面的习惯用法和你正在做的事情做对比,或者把
dput(punto)
的输出放到你的问题中,这样问题就可以重现了。另外:在您的问题中继续包含整个RStudio窗口实际上既没有帮助,也没有什么意义。

ggplot()+geom_map(数据=puntos,aes(map_id=Provincia,fill=puntos),map=arg_pv)+expand_limits(x=arg_pv$long,y=arg_pv$lat)
中,我想知道您是否只需要long和lat的min和max。现在,在我看来,您正在使用long和lat的所有值。在
ggplot()+geom_map(data=puntos,aes(map_id=Provincia,fill=puntos),map=arg_pv)+expand_limits(x=arg_pv$long,y=arg_pv$lat)
中,我想知道您现在是否只需要long和lat的最小值和最大值,在我看来,你正在使用long和lat的所有值。对此我感激不尽。这对我来说也很快。非常感谢,为什么另一个渲染速度这么慢?不完全确定,因为我没有尝试使用您的数据和方法进行复制。这是使用ggplot2执行GIS操作的“标准”方法。这都是关于“真实”GIS程序中的图层。明白了。你让它看起来很简单。@hrbrmstr我刚刚意识到
geom_map()
不需要很长时间,在aes()中lat为x和y。我检查了CRAN手册中的功能示例。哈德利使用了
扩展限制()。这是我们现在在ggplot中指定long和lat的唯一方法吗?至少当我们使用geom_map()时,这似乎是唯一的方法。如果你知道什么,你能分享你的知识吗?@jazzurro。让我模拟一下。我要说的是,ggplot2的最新CRAN版本感觉就像大众对他们的柴油车所做的一样。非常感谢你。这对我来说也很快。非常感谢,为什么另一个渲染速度这么慢?不完全确定,因为我没有尝试使用您的数据和方法进行复制。这是使用ggplot2执行GIS操作的“标准”方法。这都是关于“真实”GIS程序中的图层。明白了。你让它看起来很简单。@hrbrmstr我刚刚意识到
geom_map()
不需要很长时间,在aes()中lat为x和y。我检查了CRAN手册中的功能示例。哈德利使用了
扩展限制()。这是我们现在在ggplot中指定long和lat的唯一方法吗?至少当我们使用geom_map()时,这似乎是唯一的方法。如果你知道什么,你能分享你的知识吗?@jazzurro。让我模拟一下。我会说,ggplot2的最新CRAN版本感觉就像大众对他们的柴油车所做的一样。
ggplot() + geom_map(data = puntos, aes(map_id = Provincia, fill = Puntos), 
                    map = arg_pv) + expand_limits(x = arg_pv$long , y = arg_pv$lat) 
library(maptools)
library(rgdal)
library(raster)
library(rgeos)
library(ggplot2)
library(ggalt)
library(ggthemes)
library(viridis)
library(magrittr)

# as stated in the other answer, this is the same as your shapefile
arg_adm <- raster::getData('GADM', country='ARG', level=1)

# make the polygons a bit less verbose
gSimplify(arg_adm, 0.01, topologyPreserve=TRUE) %>% 
  SpatialPolygonsDataFrame(dat=arg_adm@data) -> arg_adm

# turn them into a data frame
arg_map <- fortify(arg_adm, region="NAME_1")

# use a gd projection for this region
arg_proj <- "+proj=aeqd +lat_0=-37.869859624840764 +lon_0=-66.533203125"

# reproducibly simulate some data
set.seed(1492)
puntos <- data.frame(id=c("Buenos Aires", "Córdoba", "Catamarca", "Chaco", "Chubut",
                          "Ciudad de Buenos Aires", "Corrientes", "Entre Ríos", "Formosa", 
                          "Jujuy", "La Pampa", "La Rioja", "Mendoza", "Misiones", "Neuquén", 
                          "Río Negro", "Salta", "San Juan", "San Luis", "Santa Cruz", 
                          "Santa Fe", "Santiago del Estero", "Tierra del Fuego", "Tucumán"),
                     value=sample(100, 24))

# plot it
gg <- ggplot() 

# necessary in the new world of ggplot2 mapping O_o
gg <- gg + geom_blank(data=arg_map, aes(long, lat))

# draw the base polygon layer
gg <- gg + geom_map(data=arg_map, map=arg_map, 
                    aes(map_id=id),
                    color="#b2b2b2", size=0.15, fill=NA)
# fill in the polygons
gg <- gg + geom_map(data=puntos, map=arg_map,
                    aes(fill=value, map_id=id),
                    color="#b2b2b2", size=0.15)

gg <- gg + scale_fill_viridis(name="Scale Title")
gg <- gg + coord_proj(arg_proj)
gg <- gg + theme_map()
gg <- gg + theme(legend.position=c(0.8, 0.1))
gg
benchplot(gg)

##        step user.self sys.self elapsed
## 1 construct     0.000    0.000   0.000
## 2     build     0.029    0.002   0.031
## 3    render     0.206    0.006   0.217
## 4      draw     0.049    0.001   0.051
## 5     TOTAL     0.284    0.009   0.299