是否有一种方法可以命名该图(地图)。它是由多行甚至一个循环创建的。我想命名它,以便可以与Cowplot或网格排列一起使用。
#create basemap
maps::map("world", regions=c("usa"), fill=T, col="#898f9c", bg="transparent", ylim=c(21.0,50.0), xlim=c(-130.0,-65.0))
points(acities$Longitude, acities$Latitude, pch=7, cex=1, col="#e9ebee")
for (i in (1:dim(acitiesc)[1])) {
inter <- geosphere::gcIntermediate(c(acitiesc$destLon[i], acitiesc$destLat[i]), c(acitiesc$Longitude[i], acitiesc$Latitude[i]), n=500)
lines(inter, lwd=0.5, col="#29487d", lty=1)
}
我也可以创建图像,但是最终用途将是闪亮应用程序的反应图,因此它需要响应用户输入。
谢谢。
您可以如下使用as.grob
程序包的ggplotify
。
library(nycflights13)
library(dplyr)
library(ggplotify)
library(grid)
usairports <- filter(as.data.frame(airports), lat < 48.5)
usairports <- filter(usairports, lon > -130)
usairports <- filter(usairports, faa!="JFK")
jfk <- filter(airports, faa=="JFK")
myplot <- function(data, ref) {
maps::map("world", regions=c("usa"), fill=T, col="#898f9c",
bg="transparent", ylim=c(21.0,50.0), xlim=c(-130.0,-65.0))
points(data$lon, data$lat, pch=7, cex=1, col="#e9ebee")
for (i in 1:nrow(data)) {
inter <- geosphere::gcIntermediate(c(ref$lon[1], ref$lat[1]),
c(data$lon[i], data$lat[i]), n=500)
lines(inter, lwd=0.5, col="#29487d", lty=1)
}
}
p1 <- as.grob(~myplot(usairports, jfk))
grid.draw(p1)
[p1
是grob
,可以使用ggplot
与grid.arrange
对象合并,如下所示:
p2 <- ggplot(data=usairports, aes(x=dst)) + geom_bar() + theme_bw()
gridExtra::grid.arrange(p1, p2)