我有一张饼图。我需要填充所有部分相同的颜色。在jfreechart指南中,我找到了方法setBaseSectionPaint
,但它没有用。我在循环中使用了方法setSectionPaint
,但它不对(超出程序代码)。为什么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 :(得分:2)
PiePlot
方法drawItem()
等调用lookupSectionPaint()
,解释了所使用的算法:
getSectionPaint()
非空,则返回; getSectionPaint(int)
为非null,则返回它; getSectionPaint(int)
为空但autoPopulate
为true
,则尝试从绘图供应商处获取新的颜料(Plot.getDrawingSupplier()
); getBaseSectionPaint()
。相反,尝试这种方法,省略对org.jfree.chart.demo.PieChartDemo1
的调用后使用setSectionPaint()
进行说明:
//plot.setSectionPaint(…);
plot.setAutoPopulateSectionPaint(false);
plot.setBaseSectionPaint(Color.blue);