首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java JFreeChart 繪製柱狀圖、餅圖與折線圖實戰

     編輯:Java 相關知識

JFreeChart 是經典 Java 圖表庫,需依賴 jfreechart、jcommon。核心流程:創建 Dataset → ChartFactory 生成 JFreeChart → 包裝為 ChartPanel 嵌入 Swing。解決中文亂碼需設置標題、圖例、坐標軸字體。

柱狀圖 (3D)

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "蘋果");
dataset.addValue(200, "北京", "梨子");
// ...更多數據
JFreeChart chart = ChartFactory.createBarChart3D(
    "水果產量", "地區", "產量", dataset, 
    PlotOrientation.VERTICAL, true, false, false);
// 設置中文字體
chart.getTitle().setFont(new Font("微軟雅黑", Font.BOLD, 18));
CategoryPlot plot = chart.getCategoryPlot();
plot.getDomainAxis().setLabelFont(new Font("微軟雅黑", Font.PLAIN, 12));
plot.getRangeAxis().setLabelFont(new Font("微軟雅黑", Font.PLAIN, 12));
ChartPanel panel = new ChartPanel(chart);

餅圖 (3D) 顯示百分比

DefaultPieDataset pieData = new DefaultPieDataset();
pieData.setValue("蘋果", 100);
pieData.setValue("梨子", 200);
JFreeChart pieChart = ChartFactory.createPieChart3D("產量佔比", pieData, true, false, false);
PiePlot piePlot = (PiePlot) pieChart.getPlot();
piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
    "{0}: {2}", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%")));

時間序列折線圖

TimeSeries series = new TimeSeries("價格", Month.class);
series.add(new Month(1, 2023), 100.5);
series.add(new Month(2, 2023), 102.3);
// ...
TimeSeriesCollection dataset = new TimeSeriesCollection(series);
JFreeChart lineChart = ChartFactory.createTimeSeriesChart(
    "價格走勢", "日期", "價格", dataset, true, true, false);
XYPlot xyPlot = (XYPlot) lineChart.getPlot();
xyPlot.getDomainAxis().setDateFormatOverride(new SimpleDateFormat("yyyy-MM"));

圖表可導出為 PNG/JPG 或直接嵌入 Web (Servlet 輸出流)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved