2017-05-29 4 views
1

私は円グラフを持っています。私はすべてのセクションに同じ色を塗る必要があります。 jfreechartガイドでは、私は方法setBaseSectionPaintを見つけましたが、それはうまくいきませんでした。私はサイクルで方法setSectionPaintを使用しましたが、それは正しくありません(余分なプログラムコード)。なぜsetBaseSectionPaintが機能しないのですか?なぜsetBaseSectionPaintが機能しないのですか?

private JFreeChart createPieChart(PieDataset piedataset){ 
    JFreeChart jfreechart = ChartFactory.createPieChart("Select the desired dictionary:", piedataset,true, true, false); 

    PiePlot pieplot = (PiePlot) jfreechart.getPlot(); 


    for (int i=0;i<piedataset.getItemCount();i++){ //excess program code 
     pieplot.setSectionPaint(piedataset.getKey(i),new Color(54, 95, 196)); 
    } 

    pieplot.setBaseSectionPaint(new Color(54, 95, 196)); //doesn't work 
    return jfreechart; 
} 
+0

http://www.jfree.org/phpBB2/viewtopic.php?f= 3&t = 22098 –

+0

残念ながら、これは私の場合ではありません。 –

答えて

2

PiePlot方法drawItem()は、とりわけ、使用するアルゴリズムを説明している、lookupSectionPaint()を呼び出し:

  • getSectionPaint()が非ヌルである場合、それを返します。
  • getSectionPaint(int)がnullでない場合、それを返します。
  • getSectionPaint(int)がヌルで、autoPopulatetrueの場合は、図面供給元から新しい塗料を取得しようとします(Plot.getDrawingSupplier())。
  • その他すべてが失敗した場合は、getBaseSectionPaint()を返します。

代わりに、このアプローチを試してみてください、setSectionPaint()への呼び出しを省略した後org.jfree.chart.demo.PieChartDemo1を使用して説明:

//plot.setSectionPaint(…); 
plot.setAutoPopulateSectionPaint(false); 
plot.setBaseSectionPaint(Color.blue); 

image

+1

ありがとう!これは私が必要とするものです。どうもありがとうございました! –

関連する問題