jfreechart自定义饼图以显示绝对值和百分比

这个可编辑的最小代码片段示例如何使用JFreeChart作为绘图API,以便显示absoulte值和百分比 ? 我既无法从互联网上的任何代码段中提取此信息,也无法从JFreechart手册中提取此信息。 代码段生成一个仅显示百分比的饼图。 在我的情况下绝对值也很重要,所以我需要在百分比下显示它们。

这是代码:( 注意它没有导入)

public class MyMinimalPieChartExample { public static void main(String[] args) { DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("some data 1",99); dataset.setValue("some data 2", 77); //third adaption JFreeChart someChart = ChartFactory.createPieChart( "some chart header", dataset, true, true, false); PiePlot illegalLegalRestPiePlot4 = (PiePlot) someChart.getPlot(); illegalLegalRestPiePlot4.setSectionPaint("some data 1", new Color(0, 255, 0)); illegalLegalRestPiePlot4.setSectionPaint("some data 2", new Color(255, 0, 0)); PiePlot plot4 = (PiePlot) someChart.getPlot(); plot4.setExplodePercent("some data 1", 0.4); plot4.setSimpleLabels(true); PieSectionLabelGenerator generator = new StandardPieSectionLabelGenerator( "{0} = {2}", new DecimalFormat("0"), new DecimalFormat("0.00%")); plot4.setLabelGenerator(generator); try { ChartUtilities.saveChartAsJPEG(new File("C:/myMinimalPieChartExample.jpeg"), someChart, 1200, 1000); } catch (Exception e) { System.err.println("couldn't write chart"); } } } 

使用MessageFormat符号{1}作为绝对节值。

有关详细信息,请参阅StandardPieSectionLabelGenerator

饼图

 public class MyMinimalPieChartExample { private static final String KEY1 = "Datum 1"; public static final String KEY2 = "Datum 2"; public static void main(String[] args) { DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue(KEY1, 99); dataset.setValue(KEY2, 77); JFreeChart someChart = ChartFactory.createPieChart( "Header", dataset, true, true, false); PiePlot plot = (PiePlot) someChart.getPlot(); plot.setSectionPaint(KEY1, Color.green); plot.setSectionPaint(KEY2, Color.red); plot.setExplodePercent(KEY1, 0.10); plot.setSimpleLabels(true); PieSectionLabelGenerator gen = new StandardPieSectionLabelGenerator( "{0}: {1} ({2})", new DecimalFormat("0"), new DecimalFormat("0%")); plot.setLabelGenerator(gen); JFrame f = new JFrame("Test"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new ChartPanel(someChart) { @Override public Dimension getPreferredSize() { return new Dimension(400, 300); } }); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } }