Java读取Excel数据绘制动态历时曲线图
Java读取Excel数据绘制动态历时曲线图
想要用Java绘制美观的历时曲线图?本文将带你一步步实现,从读取Excel数据到利用JFreeChart库生成图表,清晰易懂。
所需工具:
- Apache POI:用于读取Excel文件数据
- JFreeChart:用于创建各种类型的图表,包括曲线图
步骤详解:
-
读取Excel数据:
- 利用Apache POI库读取Excel文件(例如data.xlsx)中的数据。
- 将读取到的数据存储在Java数据结构中,例如ArrayList或HashMap。
-
创建数据集:
- 将存储的数据转换为JFreeChart可识别的数据集格式,例如DefaultCategoryDataset。
- 按照需求组织数据,例如将时间作为X轴,数值作为Y轴。
-
生成历时曲线图:
- 使用JFreeChart库的ChartFactory.createLineChart()方法创建曲线图对象。
- 设置图表标题、X轴标签、Y轴标签等属性。
- 将准备好的数据集传入图表对象。
-
保存或展示图表:
- 使用ChartUtilities.saveChartAsPNG()方法将生成的图表保存为PNG图像文件。
- 也可以将图表嵌入到Java GUI应用程序中进行展示。
示例代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class ExcelChart {
public static void main(String[] args) throws IOException {
// 读取Excel文件
FileInputStream inputStream = new FileInputStream(new File('data.xlsx'));
Workbook workbook = WorkbookFactory.create(inputStream);
Sheet sheet = workbook.getSheetAt(0);
// 存储数据
HashMap<String, ArrayList<Integer>> data = new HashMap<>();
for (Row row : sheet) {
Cell cell1 = row.getCell(0);
Cell cell2 = row.getCell(1);
String category = cell1.getStringCellValue();
int value = (int) cell2.getNumericCellValue();
if (!data.containsKey(category)) {
data.put(category, new ArrayList<Integer>());
}
data.get(category).add(value);
}
// 创建数据集
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (String category : data.keySet()) {
ArrayList<Integer> values = data.get(category);
for (int i = 0; i < values.size(); i++) {
dataset.addValue(values.get(i), category, Integer.toString(i + 1));
}
}
// 创建曲线图
JFreeChart chart = ChartFactory.createLineChart(
'历时曲线', // 图表标题
'时间', // X轴标签
'数值', // Y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向
true, // 是否显示图例
true, // 是否显示提示
false // 是否生成URL链接
);
// 保存为图像文件
ChartUtilities.saveChartAsPNG(new File('chart.png'), chart, 600, 400);
}
}
示例Excel数据格式:
| 类别 | 值1 | 值2 | 值3 | | ---- | ---- | ---- | ---- | | 类别1 | 10 | 20 | 30 | | 类别2 | 5 | 15 | 25 | | 类别3 | 8 | 12 | 16 |
通过以上步骤和代码示例,你可以轻松地使用Java读取Excel数据并生成动态历时曲线图。
原文地址: https://www.cveoy.top/t/topic/f2D7 著作权归作者所有。请勿转载和采集!