Java画趋势图

趋势图是一种用于展示数据随时间变化的可视化图表。在Java中,我们可以使用各种库和框架来绘制趋势图,比如JFreeChart和Chart.js等。本文将介绍如何使用JFreeChart库来画趋势图,并提供一些代码示例。

JFreeChart简介

JFreeChart是一个开源的Java图表库,可以用于创建各种类型的图表,包括折线图、柱状图、饼状图等。它提供了丰富的功能和灵活的配置选项,能够满足各种绘图需求。

安装JFreeChart

首先,我们需要在项目中引入JFreeChart库。可以通过Maven或手动下载jar包的方式来添加依赖。

<dependency>
    <groupId>org.jfree</groupId>
    <artifactId>jfreechart</artifactId>
    <version>1.5.3</version>
</dependency>

画折线图

折线图是一种用于显示数据随时间变化的图表。下面是一个使用JFreeChart库绘制折线图的示例代码:

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.time.Millisecond;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;

public class LineChartExample {
    public static void main(String[] args) throws InterruptedException {
        TimeSeries series = new TimeSeries("Random Data");
        Millisecond now = new Millisecond();
        double value = 100.0;

        for (int i = 0; i < 1000; i++) {
            now = (Millisecond) now.next();
            value = value + Math.random() - 0.5;
            series.add(now, value);
            Thread.sleep(100);
        }

        TimeSeriesCollection dataset = new TimeSeriesCollection();
        dataset.addSeries(series);

        JFreeChart chart = ChartFactory.createTimeSeriesChart(
                "Random Data",
                "Time",
                "Value",
                dataset,
                true,
                true,
                false
        );

        ChartFrame frame = new ChartFrame("Line Chart Example", chart);
        frame.pack();
        frame.setVisible(true);
    }
}

上述代码通过创建一个TimeSeries对象来存储数据,并使用ChartFactory.createTimeSeriesChart方法创建一个折线图。然后将图表显示在ChartFrame中。

画甘特图

甘特图是一种用于展示任务进度的图表,可以清晰地显示每个任务的开始时间和结束时间。下面是一个使用mermaid语法绘制甘特图的示例代码:

gantt
dateFormat YYYY-MM-DD
title 甘特图示例

section 任务A
任务A1 :done, a1, 2022-01-01, 2022-01-05
任务A2 :done, a2, 2022-01-06, 2022-01-10
任务A3 :done, a3, 2022-01-11, 2022-01-15

section 任务B
任务B1 :done, b1, 2022-01-01, 2022-01-03
任务B2 :done, b2, 2022-01-04, 2022-01-07
任务B3 :done, b3, 2022-01-08, 2022-01-11

section 任务C
任务C1 :done, c1, 2022-01-01, 2022-01-04
任务C2 :done, c2, 2022-01-05, 2022-01-08
任务C3 :done, c3, 2022-01-09, 2022-01-12

上述代码使用gantt关键字定义了一个甘特图,通过dateFormat指定日期格式,并使用section关键字定义了三个任务。

画饼状图

饼状图是一种用于显示数据占比的图表,常用于展示各个部分在整体中的比例关系。下面是一个使用mermaid语法绘制饼状图的示例代码:

pie
title 饼状图示例
"任务A": 40
"任务B": 30
"任务C": 20
"任务D": 10

上述代码使用pie关键字定义