การใช้ภาษา Wolfram เพื่อตีความภาษา Wolfram?
ฉันต้องการพล็อตความสัมพันธ์ของ fucntions ทั้งหมดใน Mathematica อาจจะใช้Graphหรือบังคับ - กราฟใน D3.js
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]
และฉันจะใช้สีเพื่อแยกความแตกต่างของฟังก์ชันเหล่านี้ตาม catogeries เช่นเสียงภาพและภาษาหลักได้อย่างไร
บางทีฉันอาจใช้แมชชีนเลิร์นนิงเพื่อแยกแยะฟังก์ชั่นเหล่านี้ที่ฉันลองใช้ แต่มันไม่ได้ผลดีนัก
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.2
สิ่งเหล่านี้เป็นตัวอย่างอยู่แล้วในNestGraphเอกสารของ
คำตอบ
การสนับสนุนทางเทคนิค 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
กำหนดฟังก์ชันที่สามารถแยกเพื่อนบ้านที่มีรัศมี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 index.htmlจากD3.js v4 Force Directed Graph with Labels
จากนั้นในเทอร์มินัลให้พิมพ์ดังต่อไปนี้ (python3): python -m http.server
จากนั้นเปิดhttp://localhost:8000/ใน Chrome รูปภาพสามารถลากจุดยอดแบบโต้ตอบได้
แต่สำหรับกราฟขนาดใหญ่ทั้งหมด D3.js ไม่สามารถจัดการได้ ...