1

double の配列を取り、それらをすべて水平棒グラフに 1 行で表示するプログラムに取り組んでいます。現在、カラーリング以外は機能しています。不確定な量の行があるため、データは次のようにグラフに追加されます。

public CategoryDataset createDataset() {
    DefaultCategoryDataset bardataset1 = new DefaultCategoryDataset();
    for (int i = 0; i < nanoArray.length; i++) {
        bardataset1.addValue(nanoArray[i], "Packet" + i, "Class A");
        bardataset1.addValue(startgap, "Packet Gap" + i, "Class A");
    }
}

これにより、データが適切にスタックされますが、約 300 の異なる行キーがあるため、300 の異なる色が割り当てられます。この写真を添付し​​て、それがどのように見えるかを示します。

http://i.imgur.com/hg33P.png

ご覧のとおり、これによりデータが完全に読み取れなくなります。私が望むのは、赤と青の交互の色の棒を見ることです。

編集:答えが見つかりました。jcernの方法を使用しました。またfor、double 配列の長さを反復処理し、偶数か奇数かに基づいて色を割り当てるループも作成しました。

for (int i = 0; i < packetCount; i++) {
        setSeriesToolTipGenerator(i, new StandardCategoryToolTipGenerator());
        if (i % 2 == 0) {
            setSeriesPaint(i, new Color(255, 0, 0));
        } else {
            setSeriesPaint(i, new Color(0, 0, 0));
        }
    }
4

1 に答える 1

1

新しいレンダラーを作成し、それをプロットに指定する必要があります。

まず、必要な2つの色を持つレンダリングを作成します。

CategoryItemRenderer renderer = new StackedBarRenderer {
     private Paint[] colors = new Paint[] {
        new Color(255, 0, 0), 
        new Color(0, 0, 255)
     }

     public Paint getSeriesPaint(int series) {
       return colors[(series % 2)];
     }
};

次に、プロットを取得して、使用するレンダリングを指定します。

if(chart.getPlot() instanceof CategoryPlot){
  chart.getCategoryPlot().setRenderer(renderer);
}

うまくいけば、それはあなたがなりたい場所にあなたを連れて行くはずです。

于 2012-08-15T13:39:49.397 に答える