나는 그 주제가 CrossValidated 관심사에 들어가는 지 확신 할 수 없다. 말해 줄게
그래프 ( 그래프 이론에서 ) 즉 , 공부해야합니다 . 연결되어있는 특정 수의 점이 있습니다. 모든 점과 각 점이 의존하는 점이있는 테이블이 있습니다. (또한 관련이있는 또 다른 테이블이 있습니다)
내 질문은 :
쉽게 연구하기 좋은 소프트웨어 (또는 R 패키지)가 있습니까?
그래프를 표시하는 쉬운 방법이 있습니까?
나는 그 주제가 CrossValidated 관심사에 들어가는 지 확신 할 수 없다. 말해 줄게
그래프 ( 그래프 이론에서 ) 즉 , 공부해야합니다 . 연결되어있는 특정 수의 점이 있습니다. 모든 점과 각 점이 의존하는 점이있는 테이블이 있습니다. (또한 관련이있는 또 다른 테이블이 있습니다)
내 질문은 :
쉽게 연구하기 좋은 소프트웨어 (또는 R 패키지)가 있습니까?
그래프를 표시하는 쉬운 방법이 있습니까?
답변:
연출 무향 그래프를 나타내는 다양한 패키지가 있는데, 입사 / 인접 행렬 등 이외에 그래프 ; gR 작업보기 에서 예를 확인하십시오.
시각화 및 기본 계산의 경우 Rgraphviz (@Rob에서 지적한 BioC) 외에도 igraph 패키지가 신뢰할 수 있다고 생각합니다 . 후자가 제대로 작동하려면 graphviz 도 설치해야합니다. igraph의 패키지는 많은처럼 좋은 레이아웃을 만들기위한 좋은 알고리즘이 그림은 GraphVIZ을 .
다음은 가짜 인접 행렬에서 시작하는 사용 예입니다.
adj.mat <- matrix(sample(c(0,1), 9, replace=TRUE), nr=3)
g <- graph.adjacency(adj.mat)
plot(g)
다른 옵션은 statnet 패키지입니다. Statnet에는 SNA에서 일반적으로 사용되는 모든 측정에 대한 기능이 있으며 ERG 모델을 추정 할 수도 있습니다. 에지 목록에 데이터가있는 경우 다음과 같이 데이터를 읽습니다 (데이터 프레임에 "edgelist"라는 레이블이 있다고 가정).
net <- as.network(edgelist, matrix.type = "edgelist", directed = TRUE) #if the network is directed, otherwise: directed = FALSE
데이터가 인접 행렬에있는 경우 matrix.type 인수를 "adjacency"로 바꿉니다.
net <- as.network(edgelist, matrix.type = "adjacency", directed = TRUE)
statnet 패키지에는 매우 멋진 플로팅 기능이 있습니다. 간단한 줄거리를 수행하려면 다음을 입력하십시오.
gplot(net)
중간 성 중심성에 따라 노드를 확장하려면 간단히 다음을 수행하십시오.
bet <- betweenness(net)
gplot(net, vertex.cex = bet)
기본적으로 gplot 함수는 Fruchterman-Reingold 알고리즘을 사용하여 노드를 배치하지만 모드 유형에서 제어 할 수 있습니다 (예 : 노드 유형 배치에 MDS 사용).
gplot(net, vertex.cex, mode = "mds")
또는 원 레이아웃을 사용하려면
gplot(net, vertex.cex, mode = "circle")
더 많은 가능성이 있으며이 안내서 는 대부분의 기본 옵션을 다룹니다. 자체 포함 된 예제의 경우 :
net <- rgraph(20) #generate a random network with 20 nodes
bet <- betweenness(net) #calculate betweenness scores
gplot(net) #a simple plot
gplot(net, vertex.cex = bet/3) #nodes scaled according to their betweenness centrality, the measure is divided by 3 so the nodes don't become to big.
gplot(net, vertex.cex = bet/3, mode = "circle") #with a circle layout
gplot(net, vertex.cex = bet/3, mode = "circle", label = 1:20) #with node labels
비슷한 질문은 특별히에 관심이 또한 경우, cstheory에 요청했다 평면 그래프 , 또는 서지 시각화 .
Gephi는 이미 여기에 언급되었지만 몇 가지 cstheory에서도 권장되었으므로 좋은 선택이라고 생각합니다.
다른 멋진 옵션은 다음과 같습니다.
NodeXL이 매우 유용하고 사용하기 쉽다는 것을 알았습니다 . 그래프 가져 오기 / 내보내기, 가장자리 / 정점 서식 지정, 일부 메트릭 계산, 클러스터링 알고리즘이있는 MS Excel 템플릿입니다. 사용자 정의 이미지를 정점으로 쉽게 사용할 수 있습니다.
저에게 유용한 또 다른 도구는 Microsoft 자동 그래프 레이아웃 으로, SVG를 지원하는 브라우저를 사용하여 온라인에서 좋은 레이아웃을 시도 할 수 있습니다 .