当前位置:首页 > 行业动态 > 正文

java生成统计图表

Java生成统计图表,使用JFreeChart库实现。

Java实现统计图表

在Java中,我们可以使用多种方式来实现统计图表,其中最常用的是使用Java的图形库和第三方库来创建图表,下面将介绍几种常用的方法来实现统计图表。

1、使用Java的Swing库

Java Swing库提供了丰富的组件和工具,可以用于创建各种类型的图形界面,我们可以使用Swing库中的JFreeChart组件来创建统计图表,JFreeChart是一个开源的Java图表库,它提供了丰富的图表类型和灵活的配置选项。

我们需要下载并导入JFreeChart库到我们的项目中,我们可以创建一个继承自JPanel的自定义面板类,并在该类中使用JFreeChart来绘制统计图表。

以下是一个简单的示例代码,演示如何使用JFreeChart来创建柱状图:

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.*;
public class BarChartExample extends JPanel {
    private DefaultCategoryDataset dataset;
    private JFreeChart chart;
    public BarChartExample() {
        dataset = new DefaultCategoryDataset();
        chart = createChart(dataset);
    }
    private JFreeChart createChart(DefaultCategoryDataset dataset) {
        return ChartFactory.createBarChart(
                "统计图表", // 图表标题
                "分类", // x轴标签
                "数量", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向
                true, // 是否显示图例
                true, // 是否显示工具提示
                false // 是否生成URL链接
        );
    }
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        int width = getWidth();
        int height = getHeight();
        int barWidth = width / dataset.getColumnCount();
        for (int i = 0; i < dataset.getColumnCount(); i++) {
            int x = i * barWidth;
            int y = height dataset.getValue(i).intValue();
            g.fillRect(x, y, barWidth 2, dataset.getValue(i).intValue());
        }
    }
}

在上面的代码中,我们首先创建了一个DefaultCategoryDataset对象来存储数据,我们调用createChart方法来创建一个柱状图,并将其返回值赋值给chart变量,我们在paintComponent方法中绘制柱状图,通过调整barWidth变量的值,我们可以控制柱状图的宽度。

2、使用JavaFX库

JavaFX是Java的一个现代化图形用户界面(GUI)框架,它提供了丰富的组件和动画效果,我们可以使用JavaFX库中的Chart类来创建统计图表,JavaFX的Chart类支持多种类型的图表,包括柱状图、折线图、饼图等。

以下是一个使用JavaFX创建柱状图的示例代码:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.stage.Stage;
public class BarChartExample extends Application {
    @Override
    public void start(Stage stage) {
        stage.setTitle("统计图表"); // 设置窗口标题
        final NumberAxis xAxis = new NumberAxis(); // x轴坐标轴
        final NumberAxis yAxis = new NumberAxis(); // y轴坐标轴
        final BarChart<String, Number> barChart = new BarChart<>(xAxis, yAxis); // 创建柱状图对象
        barChart.setTitle("统计图表"); // 设置图表标题
        barChart.setLegendVisible(false); // 隐藏图例
        barChart.setData(createData()); // 设置数据源
        Scene scene = new Scene(barChart, 800, 600); // 创建场景并设置大小和布局管理器为null,以便自由调整图表大小和位置
        stage.setScene(scene); // 将场景添加到窗口中显示出来
        stage.show(); // 显示窗口和图表
    }
    private XYChart.Series<String, Number> createData() { // 创建数据序列对象的方法,返回一个XYSeries对象作为数据源传递给BarChart对象进行渲染展示。
0