【问题标题】:Plotting connections between spatial points based on adjacency matrix and coordinates list in R基于邻接矩阵和R中的坐标列表绘制空间点之间的连接
【发布时间】:2015-01-06 09:45:19
【问题描述】:

我有一个方阵,其中每个元素都包含与相应行和列关联的点之间的连接量。我还有每个点的坐标列表。 我的目的是绘制这个矩阵,以便根据它们的坐标表示点,并且它们之间的连接数由不同粗细的线表示。我尝试使用 igraph 包来执行此操作,但找不到将地理坐标与行和列相关联的方法。

我当前的代码如下:

    library(igraph)
    connectivityMatrix <- as.matrix(read.table(file='settlementMatrix004800.dat'))
    g <- graph.adjacency( connectivityMatrix, weighted=TRUE, mode="undirected" )
    plot(g)

这会绘制点和连接,但不考虑网络的拓扑。 我也尝试使用 statnet 包,但也找不到考虑坐标的方法。

    library(statnet)
    connectivityMatrix <- as.matrix(read.table(file='settlementMatrix004800.dat'))
    net <- as.network(connectivityMatrix, matrix.type = "adjacency", directed = TRUE)
    bet <- betweenness(net)
    gplot(net, mode="segeo")

您对此有什么好的建议吗?

提前谢谢你,

【问题讨论】:

  • 如果你有一个特定的编码问题,我建议你这样说。就问题而言,它正在寻找某人做顾问工作,而stackoverflow不太适合。
  • 这在各个层面上都不清楚。邻接矩阵不包含“连接数”,它应该是二进制的:0=不相邻,1=相邻。 “两个两个 474 个空间位置”是什么意思?对于点 A 和 B 之间的线,您希望线宽与什么成正比?你的邻接矩阵真的不是邻接矩阵吗?显示示例数据以及您尝试过的任何内容。

标签: r coordinates adjacency-matrix geographic-distance


【解决方案1】:

思路是获取邻接矩阵中非零条目的列表,找出它们的条目索引(通过rowcol),找到对应的坐标,然后使用segments函数加入他们。下面是一个最大连通的三顶点图示例:

adj <- matrix(1, 3,3)
x <- 1:3
y <- c(1,2,1)
plot(x,y)
isLine <- which(adj!=0)
segments(x[row(adj)[isLine]], y[row(adj)[isLine]], x[col(adj)[isLine]], y[col(adj)[isLine]],   lwd=adj[isLine])

【讨论】:

  • 谢谢你,这对我有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
  • 2018-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
相关资源
最近更新 更多