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);
});
}
}
输出结果为: