命名在多条线上创建的基本R图(地图)

问题描述 投票:0回答:1

是否有一种方法可以命名该图(地图)。它是由多行甚至一个循环创建的。我想命名它,以便可以与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)

    }

我也可以创建图像,但是最终用途将是闪亮应用程序的反应图,因此它需要响应用户输入。

谢谢。

r ggplot2 plot cowplot
1个回答
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)

[p1grob,可以使用ggplotgrid.arrange对象合并,如下所示:

p2 <- ggplot(data=usairports, aes(x=dst)) + geom_bar() + theme_bw()
gridExtra::grid.arrange(p1, p2)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.