将两个R映射()并排放置

将两个R映射()并排放置,r,graphics,maps,R,Graphics,Maps,有没有可能在一张png图像中以相同的高度并排获得这两张地图?这两个图像应该用最小但适当的空间隔开,如下所示。我接受其他解决方案,尤其是ggmap。 我尝试了par(mar=…(还有mai)来减小边距大小,但这似乎并没有影响两个贴图之间的大小或空间。我还在第二个par()函数(用于状态)中使用了cex=1.8,这使得两个贴图的高度相似,但间距更大 当我将文件保存为PDF时,我会在单独的页面上获取每个地图。当我尝试png时,我只会获取密苏里地图 MWE: library(maps) op <

有没有可能在一张png图像中以相同的高度并排获得这两张地图?这两个图像应该用最小但适当的空间隔开,如下所示。我接受其他解决方案,尤其是
ggmap。

我尝试了
par(mar=…
(还有
mai
)来减小边距大小,但这似乎并没有影响两个贴图之间的大小或空间。我还在第二个par()函数(用于状态)中使用了
cex=1.8
,这使得两个贴图的高度相似,但间距更大

当我将文件保存为PDF时,我会在单独的页面上获取每个地图。当我尝试png时,我只会获取密苏里地图

MWE:

library(maps)

op <- par(mfrow=c(1,2))
png(file = "maps.png", width = 1000, height = 400)

par(mar=c(0,0,0,0))
map('state')
map('state', 'missouri', add = TRUE, fill = TRUE)
map('state', c('mississippi', 'alabama', 'north carolina', 'florida'), add = TRUE, fill = TRUE, col = "gray")

par(mar=c(0,0,0,0))
map('county', 'missouri')
map('county', 'missouri,scott', add=TRUE, fill=TRUE)

dev.off()

par(op)
库(地图)

oppar的
par
选项特定于此时激活的“图形设备”。要演示:

试试这个,从“普通”(非文件)图形开始

par(mfrow=1:2)
par('mfrow')
# [1] 1 2
png("maps.png")
par('mfrow')
# [1] 1 1
dev.off()
# windows 
#       2 
par('mfrow')
# [1] 1 2
我没有关闭以前的普通图形窗口,因此一旦我关闭了
png
设备,以前活动的窗口就再次激活。它仍然认为
mfrow=1:2

png(file = "maps.png", width = 1000, height = 400)
op <- par(mfrow=c(1,2))

par(mar=c(0,0,0,0))
map('state')
map('state', 'missouri', add = TRUE, fill = TRUE)
map('state', c('mississippi', 'alabama', 'north carolina', 'florida'), add = TRUE, fill = TRUE, col = "gray")

par(mar=c(0,0,0,0))
map('county', 'missouri')
map('county', 'missouri,scott', add=TRUE, fill=TRUE)

dev.off()

par(op)
所以我认为你的答案是这样的,其中唯一的变化是
png
par(mfrow=1:2)

png(file=“maps.png”,宽度=1000,高度=400)

op受@Andres comment的启发,我开发了一个
ggplot2
版本,使用
patchwork将两张地图并排放置。
我发现使用
geom_polygon
比将地图转换为
sf
对象更容易

library(maptools)
library(ggplot2)
library(ggthemes) # for Tufte theme
library(patchwork)

# remove the unneeded ink not removed by
# theme_tufte()
theme_tufte_empty <- function(){
  theme(axis.title = element_blank(),
        axis.text = element_blank(),
        axis.ticks.length = unit(0, "cm"))
}

usa <- map_data("state")
us_missouri <- map_data('state','missouri') #do similar for other states

us_map <- ggplot() + 
  geom_polygon(data = usa, aes(x=long, y = lat, group = group), fill = NA, color = "black") + 
  geom_polygon(data = us_missouri, aes(x = long, y = lat, group = group), fill = "black") +
  theme_tufte() + # quickly remove most ink
  theme_tufte_empty() +  
  coord_fixed(1.3)

missouri <- map_data("county", "missouri")
mo_scott <- map_data("county", "missouri,scott")

mo_map <- ggplot() + 
  geom_polygon(data = missouri, aes(x=long, y = lat, group = group), fill = NA, color = "black") + 
  geom_polygon(data = mo_scott, aes(x = long, y = lat, group = group), fill = "black") +
  theme_tufte() +
  theme_tufte_empty() +
  coord_fixed(1.3)

us_map + mo_map + plot_layout(ncol = 2, widths = c(1.5,1))
库(maptools)
图书馆(GG2)
图书馆(ggthemes)#用于簇绒主题
图书馆(拼凑)
#除去不需要的墨水,而不是通过
#主题_tufte()

theme_tufte_empty您尝试过ggplot2::geom_sf()和拼图库吗?即p1+p2+plot_布局(ncol=2)