我想以编程方式创建这样的图表
(来源:yaroslavvb.com)
我想我应该将 GraphPlot 与 VertexCoordinateRules、VertexRenderingFunction 和 EdgeRenderingFunction 一起用于图形。我应该为彩色斜面背景使用什么?
编辑 主要使用西蒙的想法,这是我最终使用的简化的“不太健壮”的版本
需要["GraphUtilities`"];
GraphPlotHighlight[edges_, verts_, color_] := Module[{},
vpos = Position[VertexList[edges], Alternatives @@ verts];
coords = Extract[GraphCoordinates[edges], vpos];
(* 添加 .002,因为当段几乎共线时,端盖消失 *)
AppendTo[coords, First[coords] + .002];
Show[Graphics[{color, CapForm["Round"], JoinForm["Round"],
厚度[.2],线[坐标],多边形[坐标]}],
GraphPlot[边],ImageSize -> 150]
]
SetOptions[GraphPlot,
VertexRenderingFunction -> ({White, EdgeForm[Black], Disk[#, .15],
黑色,文本[#2,#1]} &),
EdgeRenderingFunction -> ({Black, Line[#]} &)];
边缘 = GraphData[{"Grid", {3, 3}}, "EdgeRules"];
颜色 = {LightBlue,LightGreen,LightRed,LightMagenta};
vsets = {{8, 5, 2}, {7, 5, 8}, {9, 6, 3}, {8, 1, 2}};
MapThread[GraphPlotHighlight[edges, #1, #2] &, {vsets, colors}]

(来源:yaroslavvb.com)


