当前位置: 首页 > 教程 > JFreeChart >

JFreeChart 折线图

精华
小牛编辑
247浏览
2023-03-14

什么是JFreeChart 折线图

折线图是由直线段连接的一系列点。信息通过这些连接线显示。折线图表示数据如何以相同的时间频率变化。

下图显示了 JFreeChart 库中包含的折线图的一些演示版本:

JFreeChart 折线图的示例

让我们考虑一个示例数据,它显示了我们网站www.xnip.cn上的流量数据。

日期 每日访客人数
2016-12-19 200
2016-12-20 150
2016-12-21 100
2016-12-22 210
2016-12-23 240
2016-12-24 195
2016-12-25 245

以下代码根据上述示例数据创建折线图:

package cn.xnip;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;

public class LineChartExample extends JFrame {
  
  private static final long serialVersionUID = 1L;  
  
  public LineChartExample(String title) {  
    super(title);  
    // Create dataset  
    DefaultCategoryDataset dataset = createDataset();
    // Create chart  
    JFreeChart chart = ChartFactory.createLineChart(
        "Site Traffic", // Chart title  
        "Date", // X-Axis Label  
        "Number of Visitor", // Y-Axis Label  
        dataset  
        );  
  
    ChartPanel panel = new ChartPanel(chart);
    setContentPane(panel);  
  }  
  
  private DefaultCategoryDataset createDataset() {  
  
    String series1 = "Visitor";  
    String series2 = "Unique Visitor";  
  
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  
    dataset.addValue(200, series1, "2016-12-19");  
    dataset.addValue(150, series1, "2016-12-20");  
    dataset.addValue(100, series1, "2016-12-21");  
    dataset.addValue(210, series1, "2016-12-22");  
    dataset.addValue(240, series1, "2016-12-23");  
    dataset.addValue(195, series1, "2016-12-24");  
    dataset.addValue(245, series1, "2016-12-25");  
  
    dataset.addValue(150, series2, "2016-12-19");  
    dataset.addValue(130, series2, "2016-12-20");  
    dataset.addValue(95, series2, "2016-12-21");  
    dataset.addValue(195, series2, "2016-12-22");  
    dataset.addValue(200, series2, "2016-12-23");  
    dataset.addValue(180, series2, "2016-12-24");  
    dataset.addValue(230, series2, "2016-12-25");  
  
    return dataset;  
  }  
  
  public static void main(String[] args) {  
    SwingUtilities.invokeLater(() -> {  
      LineChartExample example = new LineChartExample("小牛知识库网:Line Chart Example");
      example.setAlwaysOnTop(true);  
      example.pack();  
      example.setSize(600, 400);  
      example.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);  
      example.setVisible(true);  
    });  
  }  
}  

输出结果为: