首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mathematica中。在GraphPlot中使用图像作为顶点时,如何防止图像重叠?

在Mathematica中。在GraphPlot中使用图像作为顶点时,如何防止图像重叠?
EN

Stack Overflow用户
提问于 2012-01-19 20:32:44
回答 1查看 717关注 0票数 8

我正在使用GraphPlot绘制大约有100个顶点的有向图。我通过定义VertexRenderingFunction将每个顶点替换为一个小的矩形或正方形图像。这些图像通常会重叠。有没有办法让Mathematica将顶点间隔得更远,以防止它们重叠?

我尝试了“方法”的各种明显选项("SpringElectricalEmbedding“、"SpringEmbedding”、"HighDimensionalEmbedding“、"CircularEmbedding”、"RandomEmbedding“、"LinearEmbedding")。

代码语言:javascript
复制
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] &)]

EN

回答 1

Stack Overflow用户

发布于 2012-01-19 23:42:49

编辑我重新开始,基于你给出的例子

使用您的transimage,您可以尝试:

代码语言:javascript
复制
p = ArrayPlot[image, ImageSize -> 35, Mesh -> True];

Graph[trans, DirectedEdges -> True,  VertexLabels -> Placed[p, Tooltip], 
  ImagePadding -> 10, ImageSize -> 500]

当您将鼠标悬停在每个顶点上时,这些图像将显示在工具提示中。如果愿意,您可以为不同的顶点标签使用不同的图像;只需使用规则列表即可。

下图显示了它的外观(没有工具提示)。单击link查看它是如何使用工具提示的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8926071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档