JFreeChart 版本:
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.4</version>
</dependency>
package com.cqrd.perftiger.thread.launchTime;
import java.awt.Color;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.CategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
public class JFreeChartLineChart {
public static void main(String[] args) {
// 创建数据集
CategoryDataset dataset = createDataset();
// 创建图表
JFreeChart chart = createChart(dataset);
ChartPanel chartPanel = new ChartPanel(chart);
JFrame frame=new JFrame();
frame.setSize(500,500);
frame.add(chartPanel);
frame.setVisible(true);
}
// 创建数据集
private static CategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "Series 1", "Category 1");
dataset.addValue(200, "Series 1", "Category 2");
dataset.addValue(150, "Series 1", "Category 3");
dataset.addValue(170, "Series 1", "Category 4");
dataset.addValue(210, "Series 1", "Category 5");
return dataset;
}
// 创建图表
private static JFreeChart createChart(CategoryDataset dataset) {
JFreeChart chart = ChartFactory.createLineChart(
"折线图", // 图表标题
"横轴", // 横轴标签
"纵轴", // 纵轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向
true, // 是否显示图例
true, // 是否生成工具
false // 是否生成 URL 链接
);
// 定制图表样式
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.white);
plot.setRangeGridlinePaint(Color.gray);
CategoryAxis categoryAxis = plot.getDomainAxis();
categoryAxis.setLowerMargin(0.01);
categoryAxis.setUpperMargin(0.01);
NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();
numberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
LineAndShapeRenderer renderer = (LineAndShapeRenderer)plot.getRenderer();
renderer.setDefaultShapesVisible(true);
renderer.setDefaultShapesFilled(true);
renderer.setDrawOutlines(true);
renderer.setUseFillPaint(true);
renderer.setDefaultFillPaint(Color.white);
renderer.setDefaultItemLabelGenerator(new CustomLabelGenerator());
renderer.setDefaultItemLabelsVisible(true);
chart.setBackgroundPaint(Color.white);
chart.setBorderPaint(Color.white);
return chart;
}
}
class CustomLabelGenerator implements CategoryItemLabelGenerator {
@Override
public String generateRowLabel(CategoryDataset categoryDataset, int i) {
return null;
}
@Override
public String generateColumnLabel(CategoryDataset categoryDataset, int i) {
return null;
}
@Override
public String generateLabel(CategoryDataset categoryDataset, int i, int i1) {
Number value = categoryDataset.getValue(i, i1);
return value.toString();
}
}