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


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.