首页 > 解决方案 > 将两个 R maps() 并排放置

问题描述

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

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

当我将文件另存为 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)

期望的结果: 在此处输入图像描述

标签: rgraphicsmaps

解决方案


这些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顺序par(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)

推荐阅读