R의 sna 패키지로 위도·경도를 반영시킨 그래프의 묘화에 대해서

소개



R의 sna 패키지를 사용해 위도·경도를 반영시킨 그래프를 그리려 하고 있습니다만,
노드가 밀집되어 버려서 잘 쓸 수 없습니다.

만약 좋은 해결 방법을 아시는 분이 계시면 어드바이스 받을 수 있으면 다행입니다.

작성한 코드



R
#snaパッケージを読み込み
library(sna)

#二部グラフのcsvファイルを読み込み
test <- read.csv("test.csv", row.names = "test") 
#matrixに変換
test <- as.matrix(test)
#転置行列を乗じる。
resulttest <- test%*%t(test)  

#ノードの緯度・経度のcsvファイルを読み込み
loctest <- read.csv("testgeo.csv",header = T,row.names = 1)
#「coo」と定義
coo <- loctest[,1:2]

#ノードに緯度・経度を反映させてプロットする。
gplot(resulttest,gmode = "graph",displaylabels = TRUE,
edge.col = rgb(0.6,0.7,0.8,0.5),jitter = FALSE,
label.pos = 5,coord = coo)

csv 파일 내용



・「test」의 내용은 다음과 같습니다.


・「testgeo」의 내용은 다음과 같습니다.


출력된 그래프





이런 느낌으로 잘 표시할 수 없었습니다.

추가



이런 식으로 노드의 크기와 에지의 폭을 좁히고, 노드에 라벨을 표시하는 것을 포기하면 다소 맛이 되었습니다.

R
gplot(resulttest,gmode = "graph",displaylabels = FALSE,
edge.col = rgb(0.6,0.7,0.8,0.5),jitter = FALSE,
label.pos = 5,coord = coo,vertex.cex = 0.3,edge.lwd = 0.3)



추가 2



「suppress.axes = FALSE」로 축을 표시시켜, 「xlim = c(133,138), ylim = c(34,37)」로 플롯 하는 범위를 지정하면 이런 느낌이 되었습니다.

R
gplot(resulttest,gmode = "graph",displaylabels = FALSE,
edge.col = rgb(0.6,0.7,0.8,0.5),jitter = FALSE,
label.pos = 5,coord = coo,vertex.cex = 0.3,edge.lwd = 0.3,
suppress.axes = FALSE,xlim = c(133,138),ylim = c(34,37))



추가 3



vertex.sides를 사용하여 정점의 가장자리 수를 지정하여 정점의 모양을 변경할 수 있습니다.
(3→삼각형, 4→사각형, 50→원)
또한 vertex.col을 사용하여 색상을 변경할 수 있습니다.

다음과 같이 행렬에 대해 위에서부터 순서대로 모양과 색을 지정할 수 있습니다.
(행렬의 전부에서 19의 정점에 대해 위에서 순서대로 rep(3,4)→삼각형을 4개, rep(4,5)→사각형을 5개, rep(50,10)→원을 10개 등. 색상도 동일합니다.)

R
gplot(resulttest,gmode = "graph",displaylabels = FALSE,
edge.col = rgb(0.6,0.7,0.8,0.5),jitter = FALSE,label.pos = 5,
coord = coo,vertex.cex = 0.3,edge.lwd = 0.3,suppress.axes = FALSE,
xlim = c(133,138),ylim = c(34,37),
vertex.sides = c(rep(3,4),rep(4,5),rep(50,10)),
vertex.col = c(rep("blue",4),rep("red",5),rep("green",10)))

좋은 웹페이지 즐겨찾기