Wolfram 언어를 사용하여 Wolfram 언어를 해석하십니까?

Aug 20 2020

Mathematica의 모든 기능의 관계를 플로팅하고 싶습니다 . D3.js에서 강제 방향 그래프를 사용 Graph하거나

k = 
  DeleteCases[
    WolframLanguageData[All, {"CanonicalName", "RelatedSymbols"}], {_, _Missing}];
k = MapAt[CanonicalName, k, {All, 2}];
data = 
  DeleteDuplicates[
    Sort /@ Flatten[Thread[#[[1]] \[UndirectedEdge] #[[2]]] & /@ k]];
GraphPlot[data, VertexSize -> Tiny, ImageSize -> Full]

그러나 수치가 너무 큽니다. 확대하고 정점을 도구 설명하는 방법이 있습니까?

나는 시도했지만 Tooltip음모를주지 않았습니다.

Graph[Tooltip[#, #] & /@ VertexList[data], data]

그리고 오디오, 이미지 및 핵심 언어와 같은 범주별로 이러한 기능을 구별하기 위해 색상을 사용하려면 어떻게해야합니까?

기계 학습을 사용하여 내가 시도한 기능을 구별 할 수 있었지만 잘 작동하지 않았습니다.

space = 
  Thread[
    VertexList[data] -> 
      DimensionReduce[
        FeatureExtract[VertexList[data], {"SegmentedWords", "TFIDF"}], 
        1]];
space[[All, 2]] = Normalize[Flatten@space[[All, 2]]];
NumberLinePlot[space[[All, 2]]]

최신 정보:

버전 : 12.1.1

이것들은 이미 NestGraph의 문서 에서 데모였습니다 .

답변

6 BobHanlon Aug 20 2020 at 22:49

기술 지원 CASE : 4620942

$Version

(* "12.1.1 for Mac OS X x86 (64-bit) (June 19, 2020)" *)

Clear["Global`*"]

flinty가 제안했듯이 documentation

graph = WolframLanguageData["Cos", "RelationshipCommunityGraph"]

정점의 레이블이 제대로 렌더링되지 않습니다.

Show[graph, ImageSize -> Large]

해결 방법으로 레이블을 수동으로 수정하십시오.

graph /. Style[lbl_, _List] :> lbl

1 partida Aug 25 2020 at 16:07

r정점 주변 반경 을 가진 이웃을 추출 할 수있는 함수를 정의합니다 n.

subgraph[g_, n_, r_] := Subgraph[g, AdjacencyList[g, n, r]~Join~{n}]

Sin함수 까지의 거리 가 2 인 이웃을 살펴 보겠습니다.

subg = subgraph[Graph[data], "Sin", 2];
GraphPlot[HighlightGraph[subg, {"Sin"}], VertexLabels -> "Name", ImageSize -> Large]

다음 HTML에서 사용할 그래프 데이터를 내 보냅니다.

json = {"nodes" -> 
    Table[{"id" -> i, "group" -> 1}, {i, VertexList@subg}], 
        "links" -> 
    Table[{"source" -> i[[1]], "target" -> i[[2]], "value" -> 1}, {i, EdgeList@subg}]};
Export["miserables.json", json]

D3.js v4 Force Directed Graph with Labelsindex.html 에서 D3.js 스크립트 다운로드

그런 다음 터미널에 다음을 입력합니다 (python3). python -m http.server

그런 다음 http://localhost:8000/Chrome에서 열면 그림이 대화식으로 정점을 드래그 할 수 있습니다.

그러나 전체 큰 그래프의 경우 D3.js가 처리 할 수 ​​없습니다.