4

我正在尝试使用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] &) ]

然后就可以了,它向我显示了每个节点的顶​​点编号。

4

2 回答 2

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] &)]

在此处输入图像描述

编辑

-- 删除了中缀符号玩笑 --

于 2011-11-20T22:07:22.170 回答
2

两个可能的问题:

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

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

什么是输出

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

?

于 2009-06-03T02:02:40.570 回答