2009-04-27 14 views
1

私は現在、散乱グラフをプロットするためにprefuseを取得しています。ここで、X軸はコンピュータ名で、Y軸は温度です。離散点ではなく値を示すバーを描くにはどうすればよいですか?Javaプリフューズライブラリを使用して棒グラフを作成するにはどうすればよいですか?

私は現在のポイントをレンダリングするために、次のコードを使用しています:

ShapeAction shape = new ShapeAction(group, Constants.SHAPE_RECTANGLE); 
ColorAction strokeColor = new DataColorAction(group, dataType, Constants.NUMERICAL, VisualItem.STROKECOLOR, colorPalette); 

ActionList draw = new ActionList(); 
draw.add(shape); 
draw.add(strokeColor); 
draw.add(new ColorAction(group, VisualItem.FILLCOLOR, 0)); 
draw.add(new RepaintAction()); 
m_vis.putAction("draw", draw); 

は、どのように私は太いバーはの番目の下から行く、代わりに各点での小さな正方形の、取得するには、このコードを適応させるだろうポイントへのグラフ?

ありがとうございました。

答えて

1

私はおそらく、これをどのようにしたかを指摘しておかなければならないと思います - Stack Overflowはあまりにもリポジトリになるはずです。以前のコードでは、以下の通りであった:

m_vis.setRendererFactory(new RendererFactory() { 
    Renderer yAxisRenderer = new AxisRenderer(Constants.LEFT, Constants.TOP); 
    Renderer xAxisRenderer = new AxisRenderer(Constants.CENTER, Constants.FAR_BOTTOM); 
    Renderer barRenderer = new ShapeRenderer(); 

    public Renderer getRenderer(VisualItem item) { 
     return item.isInGroup("yAxis") ? yAxisRenderer : 
       item.isInGroup("xAxis") ? xAxisRenderer : 
       barRenderer; 
    } 
}); 

は、私は常に正しい幅と高さの矩形を返すように形状レンダラを拡張し、それをすることになった場所の左に半分のバーを配置しました。バーを中央に配置したい場合は、それを自分で行う必要があります。プレヒューズはあなたを助けません。

m_vis.setRendererFactory(new RendererFactory() { 
    Renderer yAxisRenderer = new AxisRenderer(Constants.LEFT, Constants.TOP); 
    Renderer xAxisRenderer = new AxisRenderer(Constants.CENTER, Constants.FAR_BOTTOM); 
    Renderer barRenderer = new ShapeRenderer() { 
     protected Shape getRawShape(VisualItem item) { 
      double x = item.getX(); 
      double y = item.getY(); 
      if (Double.isNaN(x) || Double.isInfinite(x)) 
       x = getInsets().left + axisWidth + totalBarWidth/2; 
      if (Double.isNaN(y) || Double.isInfinite(y)) 
       y = 0; 

      double width = totalBarWidth/(barCount + 1) - barGap; 
      double height = getHeight() - getInsets().bottom - axisHeight - y; 
      x -= width/2; 

      return rectangle(x, y, width, height); 
     } 
    }; 

    public Renderer getRenderer(VisualItem item) { 
     return item.isInGroup("yAxis") ? yAxisRenderer : 
       item.isInGroup("xAxis") ? xAxisRenderer : 
       barRenderer; 
    } 
}); 
+0

あなたはhttp://stackoverflow.com/questions/2273068/how-to-display-3-nodes-with-3-diff-shapes-in-に1つの以上プレフューズの質問を見てもらえprefuse-library-for-java –

+0

私は数ヶ月でプリフューズを使用していないのですが、これをどのように対処するのか分かりません。私は本当にさまざまな形で混乱したことはありません。ごめんなさい。 –