最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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é)合實際代碼示例,讓你快速掌握其核心功能。

一、JFreeChart 簡介

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

  • 折線圖(Line Chart)

  • 柱狀圖(Bar Chart)

  • 餅圖(Pie Chart)

  • 散點圖(Scatter Plot)

  • 面積圖(Area Chart)

它的主要特點包括:

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

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

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

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

在開始之前,我們需要在項目中引入 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();
        }
    }
}

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

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

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

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

  • 數(shù)據(jù)點:(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);

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

以下是一個實戰(zhàn)示例,展示如何動態(tài)生成日報中的折線圖,并將其插入到 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,并在實際項目中應(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)文章

  • Mybatis注解方式@Insert的用法

    Mybatis注解方式@Insert的用法

    這篇文章主要介紹了Mybatis注解方式@Insert的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Java Volatile關(guān)鍵字實現(xiàn)原理過程解析

    Java Volatile關(guān)鍵字實現(xiàn)原理過程解析

    這篇文章主要介紹了Java Volatile關(guān)鍵字實現(xiàn)原理過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Vue?+?springboot實現(xiàn)拼圖人機(jī)驗證功能

    Vue?+?springboot實現(xiàn)拼圖人機(jī)驗證功能

    本文介紹了如何使用Vue和Spring?Boot實現(xiàn)拼圖人機(jī)驗證功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2026-01-01
  • Java線程池高效并發(fā)編程實戰(zhàn)技巧

    Java線程池高效并發(fā)編程實戰(zhàn)技巧

    線程池是一種線程管理機(jī)制,它預(yù)先創(chuàng)建一定數(shù)量的線程并放入池中,當(dāng)需要執(zhí)行任務(wù)時,從池中獲取空閑線程來執(zhí)行任務(wù),任務(wù)完成后線程不銷毀而是返回池中等待下一次任務(wù),這篇文章給大家介紹Java線程池高效并發(fā)編程實戰(zhàn)技巧,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • 使用eclipse創(chuàng)建java項目的方法

    使用eclipse創(chuàng)建java項目的方法

    這篇文章主要為大家詳細(xì)介紹了使用eclipse創(chuàng)建java項目的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Springboot整合ip2region實現(xiàn)用戶ip歸屬地獲取

    Springboot整合ip2region實現(xiàn)用戶ip歸屬地獲取

    ip2region是一個離線IP地址定位庫和IP定位數(shù)據(jù)管理框架,提供了眾多主流編程語言的 xdb 數(shù)據(jù)生成和查詢客戶端實現(xiàn),下面我們來看看如何使用ip2region實現(xiàn)用戶ip歸屬地獲取吧
    2025-05-05
  • Javaweb中使用Jdom解析xml的方法

    Javaweb中使用Jdom解析xml的方法

    Jdom是一個開源項目,基于樹形結(jié)構(gòu),利用純java的技術(shù)對XML文檔實現(xiàn)解析,生成,序列化以及多種操作.這篇文章主要介紹了Javaweb中使用Jdom解析xml的方法的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • springboot掃描引入jar包的service等組件方式

    springboot掃描引入jar包的service等組件方式

    這篇文章主要介紹了springboot掃描引入jar包的service等組件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • MyBatis攔截器動態(tài)替換表名的方法詳解

    MyBatis攔截器動態(tài)替換表名的方法詳解

    因為我們持久層框架更多地使用MyBatis,那我們就借助于MyBatis的攔截器來完成我們的功能,這篇文章主要給大家介紹了關(guān)于MyBatis攔截器動態(tài)替換表名的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Maven中兩個命令clean 和 install的使用

    Maven中兩個命令clean 和 install的使用

    Maven是一個項目管理和自動構(gòu)建工具,clean命令用于刪除項目中由先前構(gòu)建生成的target目錄,install命令用于將打包好的jar包安裝到本地倉庫中,供其他項目依賴使用,下面就來詳細(xì)的介紹一下這兩個命令
    2024-09-09

最新評論

庐江县| 大兴区| 泰顺县| 探索| 巫溪县| 石泉县| 衡山县| 武功县| 仙桃市| 滨海县| 凤阳县| 宁蒗| 清丰县| 方正县| 牙克石市| 赤水市| 沙河市| 武胜县| 图木舒克市| 花莲县| 甘南县| 大埔区| 嘉禾县| 哈尔滨市| 聂拉木县| 东辽县| 玉山县| 石林| 康定县| 金乡县| 昭通市| 宁远县| 佛学| 开江县| 津南区| 鄢陵县| 巴南区| 田阳县| 东宁县| 上高县| 景宁|