2009-05-20 6 views
4

GraphPlot関数を使って、各ノードが画像であるGraphを構築しようとしています。私は頂点として画像を表示したかったのです。誰もこれを行う方法を知っていますか?Mathematica GraphPlot with

私はこのような何か試してみました:

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
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

編集

- 中置記法のジョークを削除 -

+1

私はあなたがしようとした場合、あなたは少し余分な中置記法で絞ることができ確信している... – Simon

+0

私は正直なところ、中毒に関する妄想を理解していません。それは何よりも冗談のようです:P – abcd

+0

@yodaうん。私はここにインフィックスの投稿を終わらせます。私はちょうど '〜'表記が混乱していると考えています。私はそれをまばらに使用し、そのような方法では(PLUS b、aまたはbなどのように)演算子_spelled_またはJOINのようなものを非常に分かりやすい意味で使用します。 Mathematicaのプログラムは複雑さを増やすことなく従うのが通常難しい。 –

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

の出力は何ですか?