首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用网络可视化地理地图上的数据(R)

用网络可视化地理地图上的数据(R)
EN

Stack Overflow用户
提问于 2018-03-23 16:47:33
回答 1查看 971关注 0票数 0

我试图使用文化距离矩阵中包含的数据在地理地图上描绘一个网络。例如:

代码语言:javascript
复制
          AT      BE     CH     CZ
AT    0       0.00276 0.148  0.109
BE    0.00276 0       0.145  0.112
CH    0.148   0.145   0      0.257
CZ    0.109   0.112   0.257  0    

网络线路的起点和终点应位于不同的国家(即AT、BE、CH和CZ)。

当汇总表的相应条目低于某一阈值(例如,所有矩阵条目的平均数)时,应在各国之间画出线条。(我认为dplyr包可以用于筛选数据,如http://www.gis-blog.com/flight-connection-map-with-r/示例中所示)

这张地图包括欧亚国家。我使用获取Shapefile,并在R中绘制地理地图如下:

这张地图是用以下代码获得的:

代码语言:javascript
复制
> shapefile <- readOGR("directory_with_file", "name_of_file")
> shapefile_df <- fortify(shapefile)
> map <- ggplot() + geom_path(data = shapefile_df, aes(x = long, y = lat,
group = group),color = ‘black', size = .2)
> print(map)

如何利用矩阵的数据在这张地图上绘制网络?

(网络将代表各国的文化邻近性及其随时间的演变)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-23 20:30:21

您需要为您正在寻找的内容构建一个网络;我从ggmap获得的坐标::geocode包;一旦您有了网络,您就可以设置"Edge“参数来表示您所拥有的文化距离值,因为这将从0.002移动到0.2,否则您将得到非常小的线条,这段代码将帮助您进入轨道,您只需添加剩余的文化距离即可。

代码语言:javascript
复制
library(maps)
library(igraph)

df<-data.frame(from = c("at", "be", "ch", "cz"), to= c("be", "ch", "cz", "at"), 
               weight=c(0.02,0.145,0.257,.109))
meta <- data.frame("name"=c("at", "be", "ch", "cz"), 
                   "lon"=c(14.55,4.46,8.227,14.4738),  
                   "lat"=c(47.51,50.5,46.818,50.0755))

g <- graph.data.frame(df, directed=F, vertices=meta)
E(g)$color <- "brown"
E(g)$width <- E(g)$weight*10
lo <- as.matrix(meta[,2:3])
map("world",  xlim = c(-8, 30),
    ylim = c(35, 55), asp=1)
plot(g, layout=lo, add = TRUE, rescale = FALSE)

附加建议:在用coord_equal绘制地图时使用+ ggplot2 ()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49454687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档