亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java使用JFreeChart創(chuàng)建動態(tài)圖表的代碼示例

 更新時間:2025年02月09日 09:46:09   作者:Mr-Wanter  
在數(shù)據(jù)可視化的世界中,圖表是展示數(shù)據(jù)的強(qiáng)大工具,無論是折線圖、柱狀圖還是餅圖,它們都能幫助我們更直觀地理解數(shù)據(jù),在Java生態(tài)中,JFreeChart是一個功能強(qiáng)大且靈活的圖表庫,廣泛應(yīng)用于各種 Java 應(yīng)用程序中,本文將帶你從零開始學(xué)習(xí)如何使用JFreeChart創(chuàng)建動態(tài)圖表

前言

在數(shù)據(jù)可視化的世界中,圖表是展示數(shù)據(jù)的強(qiáng)大工具。無論是折線圖、柱狀圖還是餅圖,它們都能幫助我們更直觀地理解數(shù)據(jù)。在 Java 生態(tài)中,JFreeChart 是一個功能強(qiáng)大且靈活的圖表庫,廣泛應(yīng)用于各種 Java 應(yīng)用程序中。本文將帶你從零開始學(xué)習(xí)如何使用 JFreeChart 創(chuàng)建動態(tài)圖表,并結(jié)合實(shí)際代碼示例,讓你快速掌握其核心功能。

一、JFreeChart 簡介

JFreeChart 是一個開源的 Java 圖表庫,支持多種圖表類型,包括:

  • 折線圖(Line Chart)

  • 柱狀圖(Bar Chart)

  • 餅圖(Pie Chart)

  • 散點(diǎn)圖(Scatter Plot)

  • 面積圖(Area Chart)

它的主要特點(diǎn)包括:

  • 易于使用:通過簡單的 API 即可創(chuàng)建復(fù)雜的圖表。

  • 高度可定制:支持自定義顏色、字體、樣式等。

  • 支持導(dǎo)出:可以將圖表導(dǎo)出為 PNG、JPEG、PDF 等格式。

二、環(huán)境準(zhǔn)備

在開始之前,我們需要在項(xiàng)目中引入 JFreeChart 的依賴。如果你使用 Maven,可以在 pom.xml 中添加以下依賴:

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

三、 創(chuàng)建第一個折線圖

折線圖是展示數(shù)據(jù)趨勢的常用圖表類型。以下是一個簡單的示例,展示如何使用 JFreeChart 創(chuàng)建一個折線圖。

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtils;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

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

public class LineChartExample {
    public static void main(String[] args) {
        // 創(chuàng)建數(shù)據(jù)集
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(1, "Series1", "Category1");
        dataset.addValue(4, "Series1", "Category2");
        dataset.addValue(3, "Series1", "Category3");
        dataset.addValue(5, "Series1", "Category4");

        // 創(chuàng)建折線圖
        JFreeChart chart = ChartFactory.createLineChart(
                "Sample Line Chart", // 圖表標(biāo)題
                "Category",         // X軸標(biāo)簽
                "Value",            // Y軸標(biāo)簽
                dataset             // 數(shù)據(jù)集
        );

        // 保存圖表為圖片
        try {
            ChartUtils.saveChartAsPNG(new File("line_chart.png"), chart, 600, 400);
            System.out.println("Chart saved as line_chart.png");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

運(yùn)行結(jié)果
運(yùn)行上述代碼后,會生成一個名為 line_chart.png 的圖片文件,內(nèi)容如下:

  • 標(biāo)題:Sample Line Chart

  • X 軸標(biāo)簽:Category

  • Y 軸標(biāo)簽:Value

  • 數(shù)據(jù)點(diǎn):(Category1, 1), (Category2, 4), (Category3, 3), (Category4, 5)

四、自定義圖表樣式

JFreeChart 提供了豐富的 API 來自定義圖表樣式。以下是一些常見的自定義操作:

4.1 設(shè)置背景色

import java.awt.Color;

// 設(shè)置圖表背景色
chart.setBackgroundPaint(Color.WHITE);

// 設(shè)置繪圖區(qū)域背景色
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.LIGHT_GRAY);

4.2 設(shè)置折線顏色

import org.jfree.chart.renderer.category.LineAndShapeRenderer;

// 獲取渲染器
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();

// 設(shè)置折線顏色
renderer.setSeriesPaint(0, Color.RED); // 第一條折線為紅色
renderer.setSeriesStroke(0, new BasicStroke(2.0f)); // 設(shè)置線條粗細(xì)

4.3 設(shè)置字體(解決中文亂碼)

import org.jfree.chart.StandardChartTheme;

// 設(shè)置全局字體
StandardChartTheme chartTheme = new StandardChartTheme("CN");
chartTheme.setExtraLargeFont(new Font("宋體", Font.PLAIN, 20)); // 標(biāo)題字體
chartTheme.setLargeFont(new Font("宋體", Font.PLAIN, 16));     // 圖例字體
chartTheme.setRegularFont(new Font("宋體", Font.PLAIN, 14));   // 軸標(biāo)簽字體
ChartFactory.setChartTheme(chartTheme);

4.4 設(shè)置橫坐標(biāo)的標(biāo)簽寬度和方向

CategoryAxis categoryAxis = chart.getCategoryPlot().getDomainAxis();
categoryAxis.setMaximumCategoryLabelLines(2); // 允許每個標(biāo)簽最多兩行
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);  // 旋轉(zhuǎn)標(biāo)簽
categoryAxis.setLowerMargin(0.0); // 去掉邊緣空白
categoryAxis.setUpperMargin(0.0); // 去掉邊緣空白

五、導(dǎo)出圖表

JFreeChart 支持將圖表導(dǎo)出為多種格式,如 PNG、JPEG、PDF 等。以下是將圖表保存為 PNG 文件的示例:

import org.jfree.chart.ChartUtils;

// 保存圖表為 PNG 文件
ChartUtils.saveChartAsPNG(new File("chart.png"), chart, 800, 600);

六、實(shí)戰(zhàn):動態(tài)生成日報(bào)圖表

以下是一個實(shí)戰(zhàn)示例,展示如何動態(tài)生成日報(bào)中的折線圖,并將其插入到 Word 文檔中。

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.PictureType;
import com.deepoove.poi.data.Pictures;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtils;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

import java.io.File;
import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Map;

public class DailyReportExample {
    public static void main(String[] args) throws Exception {
        // 創(chuàng)建數(shù)據(jù)集
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "監(jiān)測站", "00:00");
        dataset.addValue(20, "監(jiān)測站", "06:00");
        dataset.addValue(30, "監(jiān)測站", "12:00");
        dataset.addValue(40, "監(jiān)測站", "18:00");

        // 創(chuàng)建折線圖
        JFreeChart chart = ChartFactory.createLineChart(
                "監(jiān)測站總在線數(shù)", // 圖表標(biāo)題
                "小時",         // X軸標(biāo)簽
                "數(shù)量",         // Y軸標(biāo)簽
                dataset         // 數(shù)據(jù)集
        );

        // 保存圖表為圖片
        String chartPath = "daily_chart.png";
        ChartUtils.saveChartAsPNG(new File(chartPath), chart, 800, 600);

        // 將圖片插入到 Word 文檔
        Map<String, Object> dataMap = new HashMap<>();
        dataMap.put("chart", Pictures.ofStream(new FileInputStream(chartPath), PictureType.PNG).create());

        XWPFTemplate template = XWPFTemplate.compile("template.docx").render(dataMap);
        template.writeToFile("output.docx");
    }
}

總結(jié)

通過本文,你已經(jīng)掌握了 JFreeChart 的基本用法,包括:

創(chuàng)建折線圖、柱狀圖等常見圖表。

自定義圖表樣式(背景色、折線顏色、字體等)。

將圖表導(dǎo)出為圖片或插入到 Word 文檔中。

JFreeChart 是一個功能強(qiáng)大且靈活的圖表庫,適用于各種數(shù)據(jù)可視化需求。希望本文能幫助你快速上手JFreeChart,并在實(shí)際項(xiàng)目中應(yīng)用它!

到此這篇關(guān)于Java使用JFreeChart創(chuàng)建動態(tài)圖表的代碼示例的文章就介紹到這了,更多相關(guān)Java JFreeChart創(chuàng)建動態(tài)圖表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java自定義映射resultMap定義及用法

    Java自定義映射resultMap定義及用法

    MyBatis的每一個查詢映射的返回類型都是ResultMap,當(dāng)我們提供返回類型屬性是resultType時,MyBatis會自動給我們把對應(yīng)值賦給resultType所指定對象的屬性,當(dāng)我們提供返回類型是resultMap時,將數(shù)據(jù)庫中列數(shù)據(jù)復(fù)制到對象的相應(yīng)屬性上,可以用于復(fù)制查詢,兩者不能同時用
    2022-11-11
  • smslib發(fā)短信實(shí)例代碼(電腦發(fā)短信)

    smslib發(fā)短信實(shí)例代碼(電腦發(fā)短信)

    smslib發(fā)短信實(shí)例,大家可以參考使用開發(fā)自己的程序
    2013-12-12
  • 關(guān)于遠(yuǎn)程調(diào)用RestTemplate的使用避坑指南

    關(guān)于遠(yuǎn)程調(diào)用RestTemplate的使用避坑指南

    這篇文章主要介紹了關(guān)于遠(yuǎn)程調(diào)用RestTemplate的使用避坑指南,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 解決@Validated注解無效,嵌套對象屬性的@NotBlank無效問題

    解決@Validated注解無效,嵌套對象屬性的@NotBlank無效問題

    這篇文章主要介紹了解決@Validated注解無效,嵌套對象屬性的@NotBlank無效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java語言實(shí)現(xiàn)掃雷游戲(1)

    Java語言實(shí)現(xiàn)掃雷游戲(1)

    這篇文章主要為大家詳細(xì)介紹了Java語言實(shí)現(xiàn)的掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • JAVA三種攔截方式詳解(原生過濾器Filter、springMVC攔截器、aop切面)

    JAVA三種攔截方式詳解(原生過濾器Filter、springMVC攔截器、aop切面)

    在Java開發(fā)中方法攔截是一種常見的技術(shù),可以用于在方法執(zhí)行前后添加額外的邏輯或修改方法的行為,這篇文章主要給大家介紹了關(guān)于JAVA三種攔截方式的相關(guān)資料,文中介紹的方式分別是原生過濾器Filter、springMVC攔截器、aop切面,需要的朋友可以參考下
    2024-05-05
  • 基于Java實(shí)現(xiàn)多線程下載并允許斷點(diǎn)續(xù)傳

    基于Java實(shí)現(xiàn)多線程下載并允許斷點(diǎn)續(xù)傳

    這篇文章主要介紹了基于Java實(shí)現(xiàn)多線程下載并允許斷點(diǎn)續(xù)傳,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Java中websocket消息推送的實(shí)現(xiàn)代碼

    Java中websocket消息推送的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java中websocket消息推送的實(shí)現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • SpringBoot自動配置與啟動流程詳細(xì)分析

    SpringBoot自動配置與啟動流程詳細(xì)分析

    這篇文章主要介紹了SpringBoot自動配置原理分析,SpringBoot是我們經(jīng)常使用的框架,那么你能不能針對SpringBoot實(shí)現(xiàn)自動配置做一個詳細(xì)的介紹。如果可以的話,能不能畫一下實(shí)現(xiàn)自動配置的流程圖。牽扯到哪些關(guān)鍵類,以及哪些關(guān)鍵點(diǎn)
    2022-11-11
  • java中壓縮文件并下載的實(shí)例詳解

    java中壓縮文件并下載的實(shí)例詳解

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于java中壓縮文件并下載的實(shí)例詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-02-02

最新評論