基于jfreechart生成曲线、柱状等图片并展示到JSP

生成曲线、柱状图等图片并展示到 JSP 页面是很常见的需求,而 JFreeChart 是一款 Java 的图表组件库,可以帮助我们轻松地生成各种类型的图表。下面是基于 JFreeChart 生成曲线、柱状等图片并展示到 JSP 的攻略:

1. 引入 JFreeChart 库和相关依赖

在项目中引入 JFreeChart 库和相关依赖。可以在 Maven 项目中添加以下依赖:

<dependency>
    <groupId>jfree</groupId>
    <artifactId>jfreechart</artifactId>
    <version>1.5.1</version>
</dependency>
<dependency>
    <groupId>org.jfree</groupId>
    <artifactId>jcommon</artifactId>
    <version>1.0.24</version>
</dependency>

2. 生成图表对象

使用 JFreeChart,首先需要生成一个图表对象。根据需要生成不同的图表类型,这里以 XY 曲线图和柱状图为例。

2.1 XY 曲线图

// 生成 XYDataset 数据集
XYSeries series = new XYSeries("Data");
series.add(1, 1);
series.add(2, 3);
series.add(3, 2);
XYDataset dataset = new XYSeriesCollection(series);

// 生成 XY 曲线图对象
JFreeChart chart = ChartFactory.createXYLineChart(
        "XY Line Chart",
        "X",
        "Y",
        dataset,
        PlotOrientation.VERTICAL,
        true,
        true,
        false
);

2.2 柱状图

// 生成 CategoryDataset 数据集
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Row 1", "Column 1");
dataset.addValue(20, "Row 1", "Column 2");
dataset.addValue(30, "Row 1", "Column 3");
dataset.addValue(40, "Row 2", "Column 1");
dataset.addValue(50, "Row 2", "Column 2");
dataset.addValue(60, "Row 2", "Column 3");

// 生成柱状图对象
JFreeChart chart = ChartFactory.createBarChart(
        "Bar Chart",
        "Category",
        "Value",
        dataset,
        PlotOrientation.VERTICAL,
        true,
        true,
        false
);

3. 将图表生成为图片并保存

// 生成 ChartPanel 对象
ChartPanel chartPanel = new ChartPanel(chart);

// 将图表生成为图片并保存
File file = new File("chart.png");
ChartUtilities.saveChartAsPNG(file, chart, 400, 300);

4. 在 JSP 页面中展示生成的图片

使用 JSP 展示生成的图片,可以在 JSP 中使用 <img> 标签引入图片。需要将图片保存到 web 工程的根目录或子目录下,然后在 JSP 中使用相对路径访问。

下面是一个简单的示例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Chart Demo</title>
</head>
<body>
    <h1>XY Line Chart</h1>
    <img src="chart.png" alt="XY Line Chart"/>
</body>
</html>

5. 完整示例

下面是一个完整的示例,展示如何生成 XY 曲线图和柱状图,并将它们保存为图片并在 JSP 中展示。

5.1 生成 XY 曲线图并保存

import java.io.File;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class XYLineChartDemo extends ApplicationFrame {

    public XYLineChartDemo(String title) {
        super(title);
        ChartPanel chartPanel = createChartPanel();
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);
    }

    private ChartPanel createChartPanel() {
        // 生成 XYDataset 数据集
        XYSeries series = new XYSeries("Data");
        series.add(1, 1);
        series.add(2, 3);
        series.add(3, 2);
        XYDataset dataset = new XYSeriesCollection(series);

        // 生成 XY 曲线图对象
        JFreeChart chart = ChartFactory.createXYLineChart(
                "XY Line Chart",
                "X",
                "Y",
                dataset,
                PlotOrientation.VERTICAL,
                true,
                true,
                false
        );

        // 将图表生成为图片并保存
        File file = new File("xy-line-chart.png");
        try {
            ChartUtilities.saveChartAsPNG(file, chart, 500, 300);
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 生成 ChartPanel 对象
        ChartPanel chartPanel = new ChartPanel(chart);
        return chartPanel;
    }

    public static void main(String[] args) {
        XYLineChartDemo demo = new XYLineChartDemo("XY Line Chart Demo");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
    }

}

5.2 生成柱状图并保存

import java.io.File;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class BarChartDemo extends ApplicationFrame {

    public BarChartDemo(String title) {
        super(title);
        ChartPanel chartPanel = createChartPanel();
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);
    }

    private ChartPanel createChartPanel() {
        // 生成 CategoryDataset 数据集
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "Row 1", "Column 1");
        dataset.addValue(20, "Row 1", "Column 2");
        dataset.addValue(30, "Row 1", "Column 3");
        dataset.addValue(40, "Row 2", "Column 1");
        dataset.addValue(50, "Row 2", "Column 2");
        dataset.addValue(60, "Row 2", "Column 3");

        // 生成柱状图对象
        JFreeChart chart = ChartFactory.createBarChart(
                "Bar Chart",
                "Category",
                "Value",
                dataset,
                PlotOrientation.VERTICAL,
                true,
                true,
                false
        );

        // 将图表生成为图片并保存
        File file = new File("bar-chart.png");
        try {
            ChartUtilities.saveChartAsPNG(file, chart, 500, 300);
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 生成 ChartPanel 对象
        ChartPanel chartPanel = new ChartPanel(chart);
        return chartPanel;
    }

    public static void main(String[] args) {
        BarChartDemo demo = new BarChartDemo("Bar Chart Demo");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
    }

}

5.3 在 JSP 中展示图片

将生成的图片保存到 web 工程的根目录下,然后在 JSP 中使用相对路径访问。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Chart Demo</title>
</head>
<body>
    <h1>XY Line Chart</h1>
    <img src="${pageContext.request.contextPath}/xy-line-chart.png" alt="XY Line Chart"/>
    <h1>Bar Chart</h1>
    <img src="${pageContext.request.contextPath}/bar-chart.png" alt="Bar Chart"/>
</body>
</html>

在浏览器中访问 JSP 页面,就可以看到生成的 XY 曲线图和柱状图了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于jfreechart生成曲线、柱状等图片并展示到JSP - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • 详解java WebSocket的实现以及Spring WebSocket

    关于Java WebSocket的实现以及Spring WebSocket,我可以为您提供以下攻略: 1. 什么是WebSocket? WebSocket是一个协议,可以在客户端和服务器之间建立即时、双向的通信。传统的HTTP协议都是单向的,即客户端请求,服务器响应。但是,随着网页变得更加交互式,出现了一些需要实时双向通信的场景,例如聊天、直播等。于是,We…

    Java 2023年5月23日
    00
  • Springboot实现多数据源切换详情

    下面我将为您详细介绍Spring Boot实现多数据源切换的完整攻略,包括以下内容: 配置数据源 配置JdbcTemplate 配置JPA 配置事务管理器 实现多数据源切换 1. 配置数据源 Spring Boot默认采用HikariCP作为连接池,我们需要分别配置多个数据源并注入到Spring中。我们可以在application.properties文件中…

    Java 2023年5月20日
    00
  • 浅谈SpringBoot项目如何让前端开发提高效率(小技巧)

    下面详细讲解一下“浅谈SpringBoot项目如何让前端开发提高效率(小技巧)”的攻略。 前言 开发SpringBoot项目有很多小技巧和工具可以帮助我们提高开发效率,其中比较重要的一点就是前端开发。本文将介绍如何在SpringBoot项目中使用一些小技巧,通过优化开发环境来提高前端开发效率。 正文 1. 静态资源缓存 静态资源(如图片、CSS和JS文件)是…

    Java 2023年5月19日
    00
  • java读取文件内容为string字符串的方法

    下面是详细讲解“Java读取文件内容为String字符串的方法”的完整攻略。 1. 读取整个文件 可以使用Java中的java.nio.file.Files类读取整个文件,具体的方法是readString。这个方法会读取整个文件的内容,并将其返回一个字符串形式。 import java.nio.file.Files; import java.nio.file…

    Java 2023年5月26日
    00
  • 快速入门介绍Java中强大的String.format()

    让我为你详细讲解一下如何快速入门介绍Java中强大的String.format()。 什么是String.format()? String.format()是Java中一个非常强大的方法,它可以让我们将一种字符串格式转换为另一种格式。它使用的格式化字符串语法类似于C语言中的printf()函数。 String.format()方法的语法 String.for…

    Java 2023年5月26日
    00
  • Spring Boot security 默认拦截静态资源的解决方法

    Spring Boot Security是Spring Boot框架中的权限管理模块,它提供了基于角色的访问控制和用户认证等功能。但是在使用过程中,往往会出现Spring Boot Security默认拦截静态资源的问题。本文将详细讲解如何解决这个问题。 问题原因 Spring Boot Security默认会对所有请求进行拦截和处理,包括静态资源。而默认的…

    Java 2023年5月20日
    00
  • springboot使用@data注解减少不必要代码

    使用Spring Boot可以大大简化Java Web应用程序的开发,使用@Data注解可通过Lombok框架来简化Java类代码。@Data注解通常包括常用注解,如@Getter、@Setter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor。这些注解可自动生成Java类的getter、sette…

    Java 2023年5月20日
    00
  • Java Base64解码错误及解决方法

    Java Base64解码错误及解决方法 背景 Base64是一种将二进制数据编码成ASCII字符可读格式的编码方式,常用于网络传输、数据存储等场景。Java提供了丰富的Base64编解码类库,如java.util.Base64或apache.commons.codec.binary.Base64等。 但在实际应用中,我们可能会遇到Base64解码错误的问题…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部