链网图怎么画
How to draw a chain network map
我想要一个中央仓库-客户供应链网络。我正在尝试用连接线绘制 394 个城市。但是我收到一条错误消息。我正在使用以下代码。
请注意,我的数据框包含城市的纬度和经度。起点是同一个地方,而目的地每一行都不同。
map <-get_map(location='united states', zoom=4, maptype = "satellite",
source='google',color='color')
p <- ggmap(map)
for(i in 2:nrow(x))
{
plot_data <-as.data.frame(rbind(c(unique(x$Origin),as.numeric(unique(x$LAT.x)),as.numeric(unique(x$LONG.x))),
c(x$Destination[i],x$LAT.y[i],x$LONG.y[i])))
colnames(plot_data) <- c("Place","Lat","Long")
plot_data$Lat <- as.numeric(as.character(plot_data$Lat))
plot_data$Long <- as.numeric(as.character(plot_data$Long))
p <- p + geom_point(data=plot_data, aes(x=Long, y=Lat),color="blue",size=3)
p <- p + geom_path(data=plot_data, aes(x=Long, y=Lat), color="red", size=1)
}
我留下一个演示,展示我通常如何处理此类任务。我从地图包中借用了一个数据集。有 long/lat 个世界城市信息。我对一些专注于美国的数据进行了子集化。我向该对象添加了两列。一个是 long,另一个是 lat 作为线条的起点。在这种情况下,我随机选择了丹佛。我使用大圆圈来获取丹佛和目的地城市之间的线路。然后,我将数据转换为 data.frame 以便 ggplot 可以使用 fortify()
.
绘制地图
library(ggmap)
library(maps)
library(dplyr)
library(ggplot2)
library(geosphere)
data(world.cities)
mymap <- get_map(location = "texas", maptype = "watercolor", source = "stamen", zoom = 4)
foo <- world.cities %>%
filter(pop >= 500000 & country.etc == "USA") %>%
mutate(start_long = -104.9903,
start_lat = 39.7392) %>%
do(fortify(as(gcIntermediate(.[,c("start_long", "start_lat")],
.[,c("long", "lat")],
100,
breakAtDateLine = FALSE,
addStartEnd = TRUE,
sp = TRUE), "SpatialLinesDataFrame")))
g <- ggmap(mymap) +
geom_path(data = foo, aes(x = long, y = lat, group = id), color = "red")
我想要一个中央仓库-客户供应链网络。我正在尝试用连接线绘制 394 个城市。但是我收到一条错误消息。我正在使用以下代码。 请注意,我的数据框包含城市的纬度和经度。起点是同一个地方,而目的地每一行都不同。
map <-get_map(location='united states', zoom=4, maptype = "satellite",
source='google',color='color')
p <- ggmap(map)
for(i in 2:nrow(x))
{
plot_data <-as.data.frame(rbind(c(unique(x$Origin),as.numeric(unique(x$LAT.x)),as.numeric(unique(x$LONG.x))),
c(x$Destination[i],x$LAT.y[i],x$LONG.y[i])))
colnames(plot_data) <- c("Place","Lat","Long")
plot_data$Lat <- as.numeric(as.character(plot_data$Lat))
plot_data$Long <- as.numeric(as.character(plot_data$Long))
p <- p + geom_point(data=plot_data, aes(x=Long, y=Lat),color="blue",size=3)
p <- p + geom_path(data=plot_data, aes(x=Long, y=Lat), color="red", size=1)
}
我留下一个演示,展示我通常如何处理此类任务。我从地图包中借用了一个数据集。有 long/lat 个世界城市信息。我对一些专注于美国的数据进行了子集化。我向该对象添加了两列。一个是 long,另一个是 lat 作为线条的起点。在这种情况下,我随机选择了丹佛。我使用大圆圈来获取丹佛和目的地城市之间的线路。然后,我将数据转换为 data.frame 以便 ggplot 可以使用 fortify()
.
library(ggmap)
library(maps)
library(dplyr)
library(ggplot2)
library(geosphere)
data(world.cities)
mymap <- get_map(location = "texas", maptype = "watercolor", source = "stamen", zoom = 4)
foo <- world.cities %>%
filter(pop >= 500000 & country.etc == "USA") %>%
mutate(start_long = -104.9903,
start_lat = 39.7392) %>%
do(fortify(as(gcIntermediate(.[,c("start_long", "start_lat")],
.[,c("long", "lat")],
100,
breakAtDateLine = FALSE,
addStartEnd = TRUE,
sp = TRUE), "SpatialLinesDataFrame")))
g <- ggmap(mymap) +
geom_path(data = foo, aes(x = long, y = lat, group = id), color = "red")