簡體   English   中英

更改圖表底部的系列顏色指示器

[英]Change the series color indicator at the bottom of the chart

我使用的JFreeChart畫一些圖表,我想圖表條被定制顏色,所以我跟着提到的教程和示例代碼這個這個鏈接。

條形顏色的問題已經解決,但現在我無法更改圖表底部的系列顏色指示器,如下圖所示。 在此輸入圖像描述

有人可以指導我如何根據酒吧改變顏色?

編輯:

class CustomRenderer extends BarRenderer
{
public Paint[] colors;

public CustomRenderer()
{
    this.colors = new Paint[] { Color.green, Color.red };
    /*
     * { Color.red, Color.blue, Color.green, Color.yellow, Color.orange,
     * Color.cyan, Color.magenta, Color.blue };
     */
}

public Paint getItemPaint(final int row, final int column)
{
    // returns color for each column
    return ((column % 2 == 0) ? colors[0] : colors[1]);
}
}
//Code for creating the chart in main() method
DefaultCategoryDataset objDataset = new DefaultCategoryDataset();
    objDataset.setValue(10, "POS", "one");
    objDataset.setValue(11, "NEG", "two");
    objDataset.setValue(8, "POS", "three");
    objDataset.setValue(12, "NEG", "four");


    final JFreeChart objChart = ChartFactory.createBarChart(
            "Top Ten Features", // Chart title
            "Features", // Domain axis label
            "POS and NEG value", // Range axis label
            objDataset, // Chart Data
            PlotOrientation.VERTICAL, // orientation
            true, // include legend?
            true, // include tooltips?
            false // include URLs?
            );


    final CategoryPlot categoryPlot = objChart.getCategoryPlot();
    CategoryItemRenderer renderere = new CustomRenderer();
    categoryPlot.setRenderer(renderere);
    final BarRenderer br = (BarRenderer) categoryPlot.getRenderer();
    br.setItemMargin(-1);

    final ChartFrame frame = new ChartFrame("Demo", objChart);
    frame.pack();
    frame.setVisible(true);

您的自定義BarRenderer會覆蓋getItemPaint() ,但它會getItemPaint()原始的getLegendItem() 這兩種方法需要保持一致。 你可以覆蓋lookupSeriesPaint()或更一般地,提供備用DrawingSupplier ,如在所引用的文章中所示此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM