【问题标题】:igraph add to geographic mapigraph 添加到地理地图
【发布时间】:2016-03-12 16:21:15
【问题描述】:

我将 R 用于网络。我使用了“network”包,但现在使用的是“igraph”。

我可以使用地理坐标绘制 igraph。 我可以使用“maptools”(readShapePoly) 绘制地图。

如何在地图上绘制 igraph?

我尝试了 new=FALSE 和 add=TRUE 但它不起作用,绘制 igraph 对象总是被覆盖。

greece <- readShapePoly.("Z:/GeoData/World_data/Basemaps/Greece/GRC_adm1.shp")

df<-data.frame("from" = c.("Athens", "Iraklio", "Thessaloniki", "Patra"), "to"= c("Thessaloniki", "Thessaloniki", "Athens", "Iraklio"))
meta <- data.frame("name"=c("Athens", "Iraklio", "Thessaloniki", "Patra"), 
               "lon"=c(23.72800,25.13356,22.94090,21.73507),  
               "lat"=c(37.98415,35.33349,40.63229,38.24628))


#plot it
g <- graph.data.frame(df, directed=T, vertices=meta)
lo <- layout.norm(as.matrix(meta[,2:3]))
plot(greece)
plot.igraph(g, layout=lo, add = T)

我见过这个解决方案,但我不想使用 cario 库,因为我使用的是地理数据,而不是图像作为基础图。 Using geo-coordinates as vertex coordinates in the igraph r-package

【问题讨论】:

    标签: r networking igraph


    【解决方案1】:

    你可以这样做:

    library(raster)
    library(igraph)
    greece <- getData('GADM', country='GRC', level=1)
    df<-data.frame("from" = c("Athens", "Iraklio", "Thessaloniki", "Patra"), "to"= c("Thessaloniki", "Thessaloniki", "Athens", "Iraklio"))
    meta <- data.frame("name"=c("Athens", "Iraklio", "Thessaloniki", "Patra"), 
                   "lon"=c(23.72800,25.13356,22.94090,21.73507),  
                   "lat"=c(37.98415,35.33349,40.63229,38.24628))
    g <- graph.data.frame(df, directed=T, vertices=meta)
    lo <- as.matrix(meta[,2:3])
    plot(greece)
    plot(g, layout=lo, add = TRUE, rescale = FALSE)
    

    显然您不想将布局坐标标准化为从 -1 到 1 的比例,因为您的地理图不使用该比例。所以没有layout.norm()。但是,似乎最新的igraph 默认情况下会自动标准化坐标。一开始在文档中没有找到负责的rescale参数,只好用debug(plot.igraph)去追踪查看。 (尽管它记录在 ?igraph.plotting 中。)如果您设置了 rescale=FALSEadd=TRUE,那么它应该可以按预期工作。

    【讨论】:

    • 这似乎是一个整洁的解决方案。但是,当我尝试重现这一点时,地图非常小。绘制这个国家也需要很长时间。你能详细说明你使用的缩放参数吗?
    • @user2995175 我怀疑您的两个问题都与我使用的“缩放参数”有关。您的数据可能很详细 - 简化它。但是,如果没有可重复的示例,这只是猜测工作......
    • 谢谢。我确实简化了它。现在工作得更快了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    相关资源
    最近更新 更多