DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("Spring Security", 100);
dataset.setValue("jBPM 4", 200);
dataset.setValue("Ext JS", 300);
dataset.setValue("JFreeChart", 100);
注意:餅圖專用 setValue(key, value),與 CategoryDataset 不通用,API 設計不夠一致。
JFreeChart chart = ChartFactory.createPieChart(
"chart", dataset, true, false, false);

PiePlot plot = (PiePlot) chart.getPlot();
plot.setExplodePercent("JFreeChart", 0.3); // 30% 炸開距離
再次暴露 API 痛點:需知具體 Plot 類型並強制轉型。

dataset.setValue("null", null);
dataset.setValue("zero", 0);
預設:標籤顯示但無數值區塊。

plot.setIgnoreNullValues(true);
plot.setIgnoreZeroValues(true);
負值 JFreeChart 自動忽略不繪製。
工廠方法換為 createPieChart3D()。

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "Spring Security", "Jan");
dataset.addValue(200, "jBPM 4", "Jan");
dataset.addValue(300, "Ext JS", "Jan");
dataset.addValue(100, "JFreeChart", "Jan");
dataset.addValue(60, "Spring Security", "Feb");
dataset.addValue(100, "jBPM 4", "Feb");
dataset.addValue(340, "Ext JS", "Feb");
dataset.addValue(130, "JFreeChart", "Feb");
第三參數為分組鍵 (Jan/Feb),每組生成一個餅圖。
JFreeChart chart = ChartFactory.createMultiplePieChart(
"chart", dataset, TableOrder.BY_COLUMN, true, false, false);
