【发布时间】:2012-01-19 12:32:44
【问题描述】:
我正在使用GraphPlot 绘制大约有 100 个顶点的有向图。我通过定义 VertexRenderingFunction 将每个顶点替换为一个小的矩形或正方形图像。图像经常重叠。有没有办法让 Mathematica 将顶点间隔得更远以防止它们重叠?
我已经为“方法”尝试了各种明显的选项(“SpringElectricalEmbedding”、“SpringEmbedding”、“HighDimensionalEmbedding”、“CircularEmbedding”、“RandomEmbedding”、“LinearEmbedding”)。
trans = {1 -> 1, 2 -> 1, 3 -> 1, 4 -> 1, 5 -> 1, 6 -> 1, 7 -> 1,
8 -> 1, 9 -> 1, 10 -> 1, 11 -> 1, 12 -> 1, 13 -> 1, 14 -> 1,
15 -> 1, 16 -> 1, 17 -> 1, 18 -> 13, 19 -> 1, 20 -> 13, 21 -> 13,
22 -> 70, 23 -> 1, 24 -> 1, 25 -> 1, 26 -> 1, 27 -> 13, 28 -> 13,
29 -> 1, 30 -> 13, 31 -> 13, 32 -> 1, 33 -> 19, 34 -> 70, 35 -> 70,
36 -> 1, 37 -> 1, 38 -> 1, 39 -> 39, 40 -> 13, 41 -> 2, 42 -> 13,
43 -> 1, 44 -> 2, 45 -> 1, 46 -> 52, 47 -> 2, 48 -> 68, 49 -> 49,
50 -> 19, 51 -> 78, 52 -> 1, 53 -> 1, 54 -> 39, 55 -> 13, 56 -> 56,
57 -> 13, 58 -> 13, 59 -> 1, 60 -> 36, 61 -> 1, 62 -> 52, 63 -> 2,
6 4 -> 68, 65 -> 19, 66 -> 56, 67 -> 4, 68 -> 76, 69 -> 19,
70 -> 78, 71 -> 1, 72 -> 39, 73 -> 52, 74 -> 56, 75 -> 23,
76 -> 76, 77 -> 56, 78 -> 78};
image = {{1, 0, 0, 0, 0}, {0, 1, 0, 0, 0}};
GraphPlot[trans, DirectedEdges -> True, VertexLabeling -> True,
VertexRenderingFunction -> (Inset[
ArrayPlot[image, ImageSize -> 15, Mesh -> True], #1] &)]
【问题讨论】:
-
欢迎来到 Stackoverflow。为什么不包含您使用的代码(或其中的一些示例),以便我们检查您遇到的问题。
-
感谢您的反馈,我正在研究您提出的一些建议。我添加了一个示例,可能有助于澄清我的问题。
-
您是否计划为每个顶点使用相同的图像?或者某些顶点看起来会有所不同? (我有理由问)。
-
每个顶点都有不同的图像,每个顶点代表一个 2x5 元胞自动机的状态。我有生成二进制矩阵列表的代码,每个矩阵都代表一个图像。然后 Arrayplot 函数将矩阵转换为可以包含在图中的图像。