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;
    }
}

请注意,上述代码中的 getDateFromExcelgetValueFromExcel 方法需要根据你的具体需求来实现从Excel中读取日期和数值数据的逻辑。

Java 折线图:使用 JFreeChart 库创建图表

原文地址: https://www.cveoy.top/t/topic/fSYi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录