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