Mathematica GraphPlot与图像

时间:2009-05-20 02:35:05

标签: graph wolfram-mathematica

我正在尝试使用GraphPlot函数来构建Graph,其中每个节点都是一个图像。我想将图像显示为我的顶点。有人知道怎么做吗?

我试过这样的事情:

GraphPlot[  Map[If[# > 2.0 , 0, 1] &,
 imgDistT, {2}],  
 VertexRenderingFunction -> (Inset[imgs[[#2]], #1, Center] &) ]

但这不起作用。 imgs是我对应每个顶点编号的图像列表。

作为一个完整性检查,如果我这样做:

GraphPlot[
 Map[If[# > 2.0 , 0, 1] &, imgDistT, {2}], 
 VertexRenderingFunction -> (Inset[Text[#2], #1, Center] &) ]

然后它工作,它显示每个节点的顶​​点数。

2 个答案:

答案 0 :(得分:4)

 imgs = ExampleData /@ ExampleData["TestImage"];
 GraphPlot[{1 -> 4, 1 -> 5, 2 -> 3, 2 -> 4, 2 -> 5, 3 -> 4, 3 -> 5}, 
   VertexRenderingFunction -> (Inset[Image[imgs[[#2]], ImageSize -> 100], #1] &)]

enter image description here

修改

- 删除了Infix符号笑话 -

答案 1 :(得分:2)

两个可能的问题:

  • 您的图表Map[If[# > 2.0 , 0, 1] &, imgDistT, {2}]似乎包含零和1 - 但零是imgs数组的无效索引

  • 由于缩放问题,图像可能无法正常显示 - 例如,它们可能非常大,只有白色部分可见。尝试指定明确的图像大小。

的输出是什么
GraphPlot[Map[If[# > 2.0 , 0, 1] &, imgDistT, {2}],
 VertexRenderingFunction -> (Module[{tmp = 
       Inset[Image[imgs[[#2]], ImageSize -> 10], #1, Center]}, 
     Print[tmp]; tmp] &)]