Java 折线图:使用 JFreeChart 库创建图表
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtils;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class LineChartExample {
public static void main(String[] args) {
// 创建数据集
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 1; i <= 66; i++) {
Date date = getDateFromExcel(i);
double value1 = getValueFromExcel(i, 1);
double value2 = getValueFromExcel(i, 2);
dataset.addValue(value1, "P1数据折线图", dateFormat.format(date));
dataset.addValue(value2, "次要数据折线图", dateFormat.format(date));
}
// 创建折线图
JFreeChart chart = ChartFactory.createLineChart(
"数据折线图", // 图表标题
"时间", // 横坐标轴标签
"数据值", // 纵坐标轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向
true, // 是否显示图例
true, // 是否生成工具
false // 是否生成URL链接
);
// 设置横坐标轴
CategoryPlot plot = (CategoryPlot) chart.getPlot();
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLowerMargin(0.0);
domainAxis.setUpperMargin(0.0);
domainAxis.setCategoryMargin(0.0);
// 设置纵坐标轴
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setAutoRangeIncludesZero(false);
// 设置折线图样式
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
renderer.setBaseShapesVisible(true);
renderer.setDrawOutlines(true);
renderer.setUseFillPaint(true);
renderer.setBaseFillPaint(java.awt.Color.white);
// 保存图表为图片文件
try {
ChartUtils.saveChartAsJPEG(new File("line_chart.jpg"), chart, 800, 600);
System.out.println("折线图已保存到文件line_chart.jpg");
} catch (IOException e) {
e.printStackTrace();
}
}
private static Date getDateFromExcel(int row) {
// 从Excel中读取日期数据
// TODO: 实现从Excel中读取日期数据的逻辑
return new Date();
}
private static double getValueFromExcel(int row, int column) {
// 从Excel中读取数值数据
// TODO: 实现从Excel中读取数值数据的逻辑
return 0.0;
}
}
请注意,上述代码中的 getDateFromExcel 和 getValueFromExcel 方法需要根据你的具体需求来实现从Excel中读取日期和数值数据的逻辑。
原文地址: https://www.cveoy.top/t/topic/fSYi 著作权归作者所有。请勿转载和采集!