命名在多条线上创建的基础 R 图(地图)
Naming a base R plot (map) created over multiple lines
有没有办法命名这个地块(地图)。它是用多行甚至一个循环创建的。我想给它命名,以便我可以将它与 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)
}
如果这样更容易,我也可以创建一个图像,但最终用途将是一个闪亮应用程序的反应图,因此它需要响应用户输入。
谢谢。
您可以使用 ggplotify
包的 as.grob
,如下所示。
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
,可以使用 grid.arrange
与 ggplot
对象组合,如下所示:
p2 <- ggplot(data=usairports, aes(x=dst)) + geom_bar() + theme_bw()
gridExtra::grid.arrange(p1, p2)
有没有办法命名这个地块(地图)。它是用多行甚至一个循环创建的。我想给它命名,以便我可以将它与 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)
}
如果这样更容易,我也可以创建一个图像,但最终用途将是一个闪亮应用程序的反应图,因此它需要响应用户输入。
谢谢。
您可以使用 ggplotify
包的 as.grob
,如下所示。
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
,可以使用 grid.arrange
与 ggplot
对象组合,如下所示:
p2 <- ggplot(data=usairports, aes(x=dst)) + geom_bar() + theme_bw()
gridExtra::grid.arrange(p1, p2)