도움을 주셔서 감사합니다.networkd3 R의 forceNetwork가 edgelist에없는 모든 노드를 표시하는 이유는 무엇입니까?
R
에 networkd3
패키지를 사용하여 노드 목록과 링크 (edgelist)의 forceNetwork
플롯을 플롯합니다. 이것은 내가 링크 확률> 0.6 < 1. 전체 edgelist 되었습니다 만 해당 링크를 선택 훨씬 더 큰 edgelist의 샘플입니다
> edgelist
round_prob NODEAid NODEBid
33979 0.6245 6990 6588
4899 0.9797 1042 1041
37109 0.6046 7498 7531
27771 0.7144 5906 16029
3603 0.6452 783 804
28491 0.6078 6034 5862
4518 0.6245 962 9874
19613 0.6745 4121 10285
19916 0.8721 4179 4180
8249 0.6821 1737 1733
35389 0.7150 7145 16992
32010 0.6495 6728 16921
22553 0.6959 4722 4549
14996 0.6031 3273 12929
35927 0.6245 7221 9814
15349 0.6245 3337 3233
34833 0.6109 7085 6852
39044 0.6117 7936 7977
39075 0.6844 7944 10978
11691 0.6821 2572 2587
:
나는 edgelist/링크 목록이 샘플을 가져 오기 전에 인덱스가 제로입니다.
또한 1875 개의 행이있는 노드리스트도 있습니다.
문제 :로 확대하기 전에,이이 음모를 제공
forceNetwork(Links = edgelist, Nodes = nodes, Source = "NODEAid",
Target = "NODEBid", Value = "round_prob", NodeID = "node",
Group = "gr", opacity = 0.9)
:
> head(nodes)
node id gr
0 1097 0 1
1 1149 1 1
2 1150 2 1
3 3395 3 1
4 3396 4 1
5 3523 5 1
내가 forceNetwork
을 사용하여 플롯하려고 : 그것의 샘플이 있습니다 나는 단지 20 쌍의 노드가 있지만, 내 플롯에는 수천이 더 있습니다 (숫자를 반환 할 수 없음).
연결되지 않은 지점 위로 마우스를 가져 가면 해당 노드가 노드 목록에 가능한 모든 노드로 구성되었음을 확인할 수있었습니다.
기본적으로 나는 forceNetwork
이 에지 링리스트에없는 모든 노드를 플로팅한다고 생각합니다.
왜 이런 일이 발생합니까? 어떻게 그렇게 할 수 있습니까?
이 질문에 Going crazy with forceNetwork in R: no edges displayed 당으로 내 모든 데이터가 숫자 형식 및 인덱스 제로 있다는 것을 확인했다. 나는 아직도이 오류가 발생합니다.
참고 :이 질문에서 How to plot a directed Graph in R with networkD3? 및이 자습서 https://christophergandrud.github.io/networkD3/에서 forceNetwork 예제를 실행하면 예상대로 출력됩니다.
그는 (simpleNetwork 이후) 필요한 코드를 수행합니다. 그리고 여러분이 통과 한 엣지리스트를 기반으로 노드 목록을 생성 한 다음 둘 모두를 'forceNetwork'에 전달하는 것이 해결책이라는 것은 맞습니다. 단지 하나의 웃음. 'simpleNetwork (edgelist) '에서 df가 예상 된 순서대로 있지 않기 때문에 그래프가 약간 잘못 표시 될 것으로 예상됩니다. – Mamonu
위의 코드에서'simpleNetwork' 명령을 수정했습니다 ... 소스 및 대상에 대한 열 이름을 명시 적으로 설정할 수 있습니다. –
@CJYetman 여러분의 도움으로 많은 도움을 주셨습니다. :) 그래서'nodes'의 인덱스 (처음 4 자리수의 노드 ID를 주문한 후 0으로 초기화 됨)가'source'와' 목표'ids. 따라서'target '의'source' 값은'nodes'의 리셋 ID와 일치해야합니다. * 원래 데이터의 샘플링에서 남은 원래의 4 자리 숫자는이 경우가 아닙니다. – Chuck