質問

staticlayoutでグラフを作成し、頂点のシェイプ色を変更しました。私はエッジに関連するものを変換しませんでした。すべてのエッジが監督されていますが、それらのいくつかは矢を見逃しています!どうすれば起こりますか?

screenshot

グラフ視覚化コード:

    Layout<Object, String> layout = new StaticLayout<Object, String>(graphProvider.graphFor(market),new MarketVertexLayoutTransformer(market,panel.getMarketGraphPane().getSize() )) ;
    layout.setSize(panel.getMarketGraphPane().getSize());
    VisualizationViewer<Object,String> graphPanel = new VisualizationViewer<Object,String>(layout);
    graphPanel.getRenderContext().setVertexShapeTransformer(new MarketVertexShapeTransformer());
    graphPanel.getRenderContext().setVertexFillPaintTransformer(new MarketVertexColorTransformer());
    panel.getMarketGraphPane().add(graphPanel, BorderLayout.CENTER);
    panel.getMarketGraphPane().revalidate();

グラフはです

graph = new DirectedSparseGraph<Object, String>();

エッジはそのように作成されます

   graph.addEdge(bundle.getGood()+"->"+transformation,bundle.getGood(),transformation);
   graph.addEdge(transformation+"->"+bundle.getGood(),transformation,bundle.getGood());

ありがとう

役に立ちましたか?

解決

矢印の配置は、遠いセグメントが頂点の形状に囲まれ、次に戻るまでエッジを細分化することによって行われます。操作が開始されたときにファーエンドポイントが頂点形状の内側にない場合、例外がスローされるはずです。正しいソリューションを選択しました。これは、頂点が所定の位置に翻訳される前に、頂点の形状を原点に集中させることです。トム・ネルソン

他のヒント

問題はEdgerendererによって引き起こされます。エッジが頂点の左上隅に接続されている場合、混乱します。形を変えたとき

CIRCLE(new Ellipse2D.Double(0,0,40,40)),
BOX(new Rectangle2D.Double(0,0,40,40));

CIRCLE(new Ellipse2D.Double(-20,-20,40,40)),
BOX(new Rectangle2D.Double(-20,-20,40,40));

接続ポイントは頂点の中心に移動し、そこからEdgerendererは問題なくその魔法を行います。ただし、形状のフレーム位置を変更すると、この違いが生じる理由がわかりません。誰かがこれを説明できれば喜んでいるでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top