R 中的网络图和美国地图
我根据美国各州之间的流量数据创建了一个网络图。对于每个顶点,我都有该州的纬度/经度。
我希望重新创建一种显示边缘的网络图,只不过我将每个顶点的位置设置为它们的地理位置,并在后台有一个州边界地图。
我正在使用 igraph 来创建我的网络。 ggplot2 中有一些很酷的映射示例,所以我想知道这是否是一个选项。我相信我已经使用 Pajek 看到了类似的选项,但我希望留在 R 中。
任何想法/见解将不胜感激。
- 布罗克
I created a network graph from data on flows between US states. For each vertex, I have the lat/long of the state.
I am hoping to recreate a network kind of graph that shows the edges, except that I set the location of each vertex to be their geographic position and have a state boundary map in the background.
I am using to igraph to create my network. There have been some cool mapping examples in ggplot2, so I am wondering if that is an option. I believe I have seen similar options using Pajek, but I am hoping to stay within R.
Any ideas/insight would be appreciated.
- Brock
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您有多个处理地图的包。最简单的是
maps
,它为您提供州地图。您可以使用坐标绘制顶点。可以使用基本工具操作和添加这些图,请记住 x 轴是经度,y 轴是纬度。可以使用
segments()
函数绘制边。在 ggplot2 中,只需使用
map_data()
函数即可为您提供地图的形状数据,并使用geom_polygon()
将其以您想要的任何形式添加到图形中。想。同样,您可以使用适当的 ggplot2 函数geom_point()
和geom_segment()
的坐标来添加顶点和边。您链接的代码向您展示了如何操作,或者查看此一个例子。接下来,您可以查看
maptools
包,它提供了更多功能,以及mapproj
,它允许对同一地图进行不同的投影。您也可以使用这些包来计算坐标系中的地理距离。mapdata
包含的数据库较多,基本覆盖了全世界。您可以很好地使用坐标。You have multiple packages dealing with maps. The most easy is
maps
, which gives you the states map. You can plot the vertices over using the coordinates.These plots can be manipulated and added to using the base tools, keeping in mind the x axis is the longitude and the y axis is the latitude. edges can be plotted using the
segments()
function.In ggplot2 just use the
map_data()
function, which gives you the shape-data of the map, and thegeom_polygon()
to add it to the graph in whatever form you want. Again, you can add the vertices and edges using the coordinates with the appropriate ggplot2 functiongeom_point()
andgeom_segment()
. The code you link at shows you how, or otherwise look at this for an example.Next to that, you can take a look at the packages
maptools
, which offers more functionality and,mapproj
, which allows for different projections of the same map. You can use these packages as well to calculate geographical distances in a coordinate system.mapdata
contains more databases, and covers basically the whole world. You can work with coordinates pretty nicely.