그래프 이론-분석 및 시각화


22

나는 그 주제가 CrossValidated 관심사에 들어가는 지 확신 할 수 없다. 말해 줄게

그래프 ( 그래프 이론에서 ) 즉 , 공부해야합니다 . 연결되어있는 특정 수의 점이 있습니다. 모든 점과 각 점이 의존하는 점이있는 테이블이 있습니다. (또한 관련이있는 또 다른 테이블이 있습니다)

내 질문은 :
쉽게 연구하기 좋은 소프트웨어 (또는 R 패키지)가 있습니까?
그래프를 표시하는 쉬운 방법이 있습니까?


cran.r-project.org/web/packages/graph/vignettes/graph.pdf 를 사용 하려고 했지만 "Rgraphviz"패키지를 더 이상 사용할 수 없다는 사실에 문제가 있습니다. 다른 해결책이 있습니까?
— RockScience

1
Rgraphviz는 bioconductor에 있습니다 : bioconductor.org/packages/release/bioc/html/Rgraphviz.html
— Rob Hyndman

1
감사! Graphviz는 완벽하고 매우 유연합니다. Rgraphviz 인터페이스와 함께 R에서 사용하며 훌륭하게 작동합니다.
— RockScience

답변:


15

iGraph 는 매우 흥미로운 교차 언어 (R, Python, Ruby, C) 라이브러리입니다. 단방향 및 방향 그래프로 작업 할 수 있으며 이미 구현 된 분석 알고리즘이 상당히 많습니다.


1
(+1) 내 응답이 당신의 뒤를 따른 것 같습니다. 귀하의 응답이 다소 다른 관점 (크로스 플랫폼, 알고리즘)을 강조함에 따라 응답이 너무 중복되지는 않지만 느낌없이 제거 할 수 있다고 생각합니다.
— chl

14

연출 무향 그래프를 나타내는 다양한 패키지가 있는데, 입사 / 인접 행렬 등 이외에 그래프 ; 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)

대체 텍스트


답변 주셔서 감사합니다. graphviz는 R로 설치하기 쉽지 않지만 훌륭한 라이브러리가되는 이음새
— RockScience

참고로 지금은 R로 graphviz 코드를 생성하고 mediawiki graphviz 확장을 사용하여 mediawiki에서 읽습니다. (Rgraphviz 패키지는 설치가 쉽지 않으며 R의 마지막 버전에서는 작동하지 않습니다)
— RockScience

"패키지 '그래프'가 CRAN 저장소에서 제거되었습니다."
— bartektartanus

8

말한 것 외에도, vusualization 작업 (및 R 외부)의 경우 Gephi 확인에 관심이있을 수 있습니다 .


8

다른 옵션은 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

(+1)이 패키지를 사용하지는 않았지만, 개요에서는 시도해 보라고 제안합니다. 첫눈에 좋은 것 같습니다.
— chl

3

비슷한 질문은 특별히에 관심이 또한 경우, cstheory에 요청했다 평면 그래프 , 또는 서지 시각화 .

Gephi는 이미 여기에 언급되었지만 몇 가지 cstheory에서도 권장되었으므로 좋은 선택이라고 생각합니다.

다른 멋진 옵션은 다음과 같습니다.

  • Flare 는 정말 멋진 시각화 도구를 제공하고 보고서와 논문을위한 매우 멋진 그래픽을 만듭니다.
  • Cyptoscape 에는 매우 강력한 분석 및 시각화 도구가 있습니다. 화학 및 분자 생물학에 특히 좋습니다.
  • 이 웹 사이트 는 다른 많은 멋진 시각화 도구 및 라이브러리에 대한 링크를 제공합니다 (R은 아니지만).

2

NodeXL이 매우 유용하고 사용하기 쉽다는 것을 알았습니다 . 그래프 가져 오기 / 내보내기, 가장자리 / 정점 서식 지정, 일부 메트릭 계산, 클러스터링 알고리즘이있는 MS Excel 템플릿입니다. 사용자 정의 이미지를 정점으로 쉽게 사용할 수 있습니다.
저에게 유용한 또 다른 도구는 Microsoft 자동 그래프 레이아웃 으로, SVG를 지원하는 브라우저를 사용하여 온라인에서 좋은 레이아웃을 시도 할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.