java圖表,java圖表組件

本文目錄一覽:

java怎麼做報表功能?

使用 JFreeChart 生成各種樣式的圖表

限於篇幅的問題我們在這裡只實現兩種常用的圖表,其他類型圖表讀者可以觸類旁通。我們先給出柱狀圖的實現,餅圖的實現再來跟柱狀圖進行比較。

1 柱狀圖

package lius.chart.demo;

import java.io.*;

import org.jfree.data.*;

import org.jfree.chart.*;

import org.jfree.chart.plot.*;

/**

* 該類用於演示最簡單的柱狀圖生成

* @author Winter Lau

*/

public class BarChartDemo {

public static void main(String[] args) throws IOException{

CategoryDataset dataset = getDataSet2();

JFreeChart chart = ChartFactory.createBarChart3D(

“水果產量圖”, // 圖表標題

“水果”, // 目錄軸的顯示標籤

“產量”, // 數值軸的顯示標籤

dataset, // 數據集

PlotOrientation.VERTICAL, // 圖表方向:水平、垂直

true, // 是否顯示圖例(對於簡單的柱狀圖必須是 false)

false, // 是否生成工具

false // 是否生成 URL 鏈接

);

FileOutputStream fos_jpg = null;

try {

fos_jpg = new FileOutputStream(“D:\\fruit.jpg”);

ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);

} finally {

try {

fos_jpg.close();

} catch (Exception e) {}

}

}

/**

* 獲取一個演示用的簡單數據集對象

* @return

*/

private static CategoryDataset getDataSet() {

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(100, null, “蘋果”);

dataset.addValue(200, null, “梨子”);

dataset.addValue(300, null, “葡萄”);

dataset.addValue(400, null, “香蕉”);

dataset.addValue(500, null, “荔枝”);

return dataset;

}

/**

* 獲取一個演示用的組合數據集對象

* @return

*/

private static CategoryDataset getDataSet2() {

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(100, “北京”, “蘋果”);

dataset.addValue(100, “上海”, “蘋果”);

dataset.addValue(100, “廣州”, “蘋果”);

dataset.addValue(200, “北京”, “梨子”);

dataset.addValue(200, “上海”, “梨子”);

dataset.addValue(200, “廣州”, “梨子”);

dataset.addValue(300, “北京”, “葡萄”);

dataset.addValue(300, “上海”, “葡萄”);

dataset.addValue(300, “廣州”, “葡萄”);

dataset.addValue(400, “北京”, “香蕉”);

dataset.addValue(400, “上海”, “香蕉”);

dataset.addValue(400, “廣州”, “香蕉”);

dataset.addValue(500, “北京”, “荔枝”);

dataset.addValue(500, “上海”, “荔枝”);

dataset.addValue(500, “廣州”, “荔枝”);

return dataset;

}

}

2 餅圖

package lius.chart.demo;

import java.io.*;

import org.jfree.data.*;

import org.jfree.chart.*;

/**

* 用於演示餅圖的生成

* @author Winter Lau

*/

public class PieChartDemo {

public static void main(String[] args) throws IOException{

DefaultPieDataset data = getDataSet();

JFreeChart chart = ChartFactory.createPie3DChart(“水果產量圖”, // 圖表標題

data,

true, // 是否顯示圖例

false,

false

);

// 寫圖表對象到文件,參照柱狀圖生成源碼

}

/**

* 獲取一個演示用的簡單數據集對象

* @return

*/

private static DefaultPieDataset getDataSet() {

DefaultPieDataset dataset = new DefaultPieDataset();

dataset.setValue(“蘋果”,100);

dataset.setValue(“梨子”,200);

dataset.setValue(“葡萄”,300);

dataset.setValue(“香蕉”,400);

dataset.setValue(“荔枝”,500);

return dataset;

}

}

3將生成的圖表移到瀏覽器上

package lius.chart.demo;

import java.io.IOException;

import javax.servlet.*;

import javax.servlet.http.HttpServlet;

import org.jfree.data.*;

import org.jfree.chart.*;

/**

* 演示通過 servlet 直接輸出圖表

* @author Winter Lau

*/

public class ChartDemoServlet extends HttpServlet {

public void service(ServletRequest req, ServletResponse res)

throws ServletException, IOException

{

res.setContentType(“image/jpeg”);

DefaultPieDataset data = getDataSet();

JFreeChart chart = ChartFactory.createPie3DChart(“水果產量圖”,

data,

true,

false,

false

);

ChartUtilities.writeChartAsJPEG(res.getOutputStream(),

100,chart,400,300,null);

}

/**

* 獲取一個演示用的簡單數據集對象

* @return

*/

private static DefaultPieDataset getDataSet() {

DefaultPieDataset dataset = new DefaultPieDataset();

dataset.setValue(“蘋果”,100);

dataset.setValue(“梨子”,200);

dataset.setValue(“葡萄”,300);

dataset.setValue(“香蕉”,400);

dataset.setValue(“荔枝”,500);

return dataset;

}

}

4高級主題

很多情況我們不僅僅要求可以在瀏覽器上顯示一個圖表,我們更需要客戶可以直接在圖表上做一下交互的操作,例如獲取信息提示,點擊圖表某個部分進行更詳細信息的展示等等。例如前面生成的簡單柱狀圖,用戶需要在看到柱狀圖後點擊某種水果例如是蘋果即可看到各個地區蘋果產量的情況。為此就要求該圖形具有交互操作的功能。在 HTML 中為了讓一個圖像具有可交互的功能就必須給該圖像定義一個 Map 對象。下表節選一段具有該功能的 HTML 代碼:

MAP NAME=”chartMap”

AREA SHAPE=”RECT” COORDS=”81,15,126,254″ href=”?series=0category=100″

title=”100 = 7,048″

onclick=”javascript:clickChart(‘100’);return false;”

AREA SHAPE=”RECT” COORDS=”143,27,188,255″ href=”?series=0category=200″

title=”200 = 6,721″

onclick=”javascript: clickChart (‘200’);return false;”

AREA SHAPE=”RECT” COORDS=”205,54,250,255″ href=”?series=0category=300″

title=”300 = 5,929″

onclick=”javascript: clickChart (‘300’);return false;”

AREA SHAPE=”RECT” COORDS=”267,85,312,255″ href=”?series=0category=400″

title=”400 = 5,005″

onclick=”javascript: clickChart (‘400’);return false;”

AREA SHAPE=”RECT” COORDS=”329,17,374,255″ href=”?series=0category=Diet”

title=”Diet = 7,017″ onclick=”javascript:

clickChart (‘Diet’);return false;”

/MAP

由此就產生了一個問題:如果根據一個圖像來生成對應的 MAP 對象。我們回頭看看剛才的代碼,在創建一個圖表對象時候有兩個參數,我們舉柱狀圖的例子來講這兩個參數就是 ChartFactory. createBarChart3D 方法中的最後兩個參數,這兩個參數的類型都是布爾值。這兩個參數意思分別是:是否創建工具提示 (tooltip) 以及是否生成 URL。這兩個參數分別對應着 MAP 中一個 AREA 的 title 屬性以及 href 屬性。

可是我想知道的是怎麼來產生這個 MAP 啊!哈哈,不要着急,JFreeChart 已經幫我們做好生成 MAP 對象的功能。為了生成 MAP 對象就要引入另外一個對象:ChartRenderingInfo。因為 JFreeChart 沒有直接的方法利用一個圖表對象直接生成 MAP 數據,它需要一個中間對象來過渡,這個對象就是 ChartRenderingInfo。

eclipse中用JAVA代碼怎麼畫柱形圖表

用jfreechart

jfreechart繪製柱狀圖

import java.io.File;

import java.io.IOException;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.ChartUtilities;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.data.category.DefaultCategoryDataset;

/*

* 繪製柱狀圖

*你亮哥

* */

public class BarChart3DDemo

{

public static void main(String[] args)

{

try

{

//設置主題

ChartFactory.setChartTheme(Theme.getTheme());

//構造數據

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(100, “JAVA”,”1″);

dataset.addValue(200, “js”,”1″);

dataset.addValue(200, “C++”, “2”);

dataset.addValue(300, “C”, “3”);

dataset.addValue(400, “HTML”, “4”);

dataset.addValue(400, “CSS”, “5”);

/*

* public static JFreeChart createBarChart3D(

* java.lang.String title, 設置圖表的標題

* java.lang.String categoryAxisLabel, 設置分類軸的標示

* java.lang.String valueAxisLabel, 設置值軸的標示

* CategoryDataset dataset, 設置數據

* PlotOrientation orientation, 設置圖表的方向

* boolean legend, 設置是否顯示圖例

* boolean tooltips,設置是否生成熱點工具

* boolean urls) 設置是否顯示url

*/

JFreeChart chart = ChartFactory.createBarChart3D(“編程語言統計”, “語言”,

“學習人數”, dataset, PlotOrientation.VERTICAL, true, false,

false);

//保存圖表

ChartUtilities.saveChartAsPNG(new File(“E:/chart/BarChart3D.png”), chart, 800, 500);

System.out.println(“繪圖完成”);

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

===================================================================================

//一條線 有點 有數

package Test;

import java.awt.Color;

import java.awt.Font;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.ChartFrame;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.axis.AxisSpace;

import org.jfree.chart.labels.ItemLabelAnchor;

import org.jfree.chart.labels.ItemLabelPosition;

import org.jfree.chart.labels.StandardXYItemLabelGenerator;

import org.jfree.chart.plot.XYPlot;

import org.jfree.chart.renderer.xy.XYItemRenderer;

import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;

import org.jfree.chart.title.TextTitle;

import org.jfree.data.time.Month;

import org.jfree.data.time.TimeSeries;

import org.jfree.data.time.TimeSeriesCollection;

import org.jfree.ui.RectangleInsets;

import org.jfree.ui.TextAnchor;

public class try123 {

public static void main(String[] args){

//首先構造數據

TimeSeries timeSeries = new TimeSeries(“BMI”, Month.class);

// 時間曲線數據集合

TimeSeriesCollection lineDataset = new TimeSeriesCollection();

// 構造數據集合

timeSeries.add(new Month(1, 2009), 45);

timeSeries.add(new Month(2, 2009), 46);

timeSeries.add(new Month(3, 2009), 1);

timeSeries.add(new Month(4, 2009), 500);

timeSeries.add(new Month(5, 2009), 43);

timeSeries.add(new Month(6, 2009), 324);

timeSeries.add(new Month(7, 2009), 632);

timeSeries.add(new Month(8, 2009), 34);

timeSeries.add(new Month(9, 2009), 12);

timeSeries.add(new Month(10, 2009), 543);

timeSeries.add(new Month(11, 2009), 32);

timeSeries.add(new Month(12, 2009), 225);

lineDataset.addSeries(timeSeries);

JFreeChart chart = ChartFactory.createTimeSeriesChart(“”, “date”, “bmi”, lineDataset, true, true, true);

//增加標題

chart.setTitle(new TextTitle(“XXXBMI指數”, new Font(“隸書”, Font.ITALIC, 15)));

chart.setAntiAlias(true);

XYPlot plot = (XYPlot) chart.getPlot();

plot.setAxisOffset(new RectangleInsets(10,10,10,10));//圖片區與坐標軸的距離

plot.setOutlinePaint(Color.PINK);

plot.setInsets(new RectangleInsets(15,15,15,15));//坐標軸與最外延的距離

// plot.setOrientation(PlotOrientation.HORIZONTAL);//圖形的方向,包括坐標軸。

AxisSpace as = new AxisSpace();

as.setLeft(25);

as.setRight(25);

plot.setFixedRangeAxisSpace(as);

chart.setPadding(new RectangleInsets(5,5,5,5));

chart.setNotify(true);

// 設置曲線是否顯示數據點

XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();

xylineandshaperenderer.setBaseShapesVisible(true);

// 設置曲線顯示各數據點的值

XYItemRenderer xyitem = plot.getRenderer();

xyitem.setBaseItemLabelsVisible(true);

xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_LEFT));

xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());

xyitem.setBaseItemLabelFont(new Font(“Dialog”, 1, 14));

plot.setRenderer(xyitem);

//顯示

ChartFrame frame = new ChartFrame(“try1”, chart);

frame.pack();

frame.setVisible(true);

}

}

java生成的word圖表不能編輯嗎

java生成的word圖表不能編輯。java直接生成的word圖表不能編輯,必須要啟動word後啟用編輯模式才能進行編輯。

如何使用java做統計圖表

//參考地址去網站下js控件,下面是餅圖的代碼,下圖是我的代碼效果

function query1(housetype,redStatisticsList,text0,cashingSum,tranferSum){

!–紅包發放數據–

var myrodiusred = echarts.init(document.getElementById(‘mainrodius’));//ID

var redHousehold = housetype;

var redMoney = redStatisticsList;

var allMoney = 0;//總金額

$.each(redStatisticsList,function(index,item){

allMoney =allMoney+ Number(item.value);

})

optionTwo = {

title : {

text: text0,

subtext: “總金額:”+allMoney+”\n\n提現總額:”+cashingSum+”\n\n到賬總額:”+tranferSum,

x:’center’

},

tooltip : {

trigger: ‘item’,

formatter: “{a} br/{b} ({d}%)”

},

legend: {

orient: ‘vertical’,

left: ‘left’,

data: housetype

},

series : [

{

type: ‘pie’,

radius : ‘55%’,

center: [‘50%’, ‘60%’],

data:redMoney,

itemStyle: {

emphasis: {

shadowBlur: 10,

shadowOffsetX: 0,

shadowColor: ‘rgba(0, 0, 0, 0.5)’

}

}

}

]

};

        myrodiusred.setOption(optionTwo);

      }

java導出excel圖表

通過Java程序導出帶圖表的excel嗎?參考下面用spire.xls.jar來創建Excel圖表的方法,這裡以創建餅圖為例,當然你也可以指定創建其他圖表類型,如柱狀圖、折線圖、雷達圖、散點圖等等:

import com.spire.xls.*;

import com.spire.xls.charts.ChartSerie;

import java.awt.*;

public class CreatePieChart {

public static void main(String[] args) {

//創建Workbook對象

Workbook workbook = new Workbook();

//獲取第一個工作表

Worksheet sheet = workbook.getWorksheets().get(0);

//將圖表數據寫入工作表

sheet.getCellRange(“A1”).setValue(“年份”);

sheet.getCellRange(“A2”).setValue(“2002”);

sheet.getCellRange(“A3”).setValue(“2003”);

sheet.getCellRange(“A4”).setValue(“2004”);

sheet.getCellRange(“A5”).setValue(“2005”);

sheet.getCellRange(“B1”).setValue(“銷售額”);

sheet.getCellRange(“B2”).setNumberValue(4000);

sheet.getCellRange(“B3”).setNumberValue(6000);

sheet.getCellRange(“B4”).setNumberValue(7000);

sheet.getCellRange(“B5”).setNumberValue(8500);

//設置單元格樣式

sheet.getCellRange(“A1:B1”).setRowHeight(15);

sheet.getCellRange(“A1:B1”).getCellStyle().setColor(Color.darkGray);

sheet.getCellRange(“A1:B1”).getCellStyle().getExcelFont().setColor(Color.white);

sheet.getCellRange(“A1:B1”).getCellStyle().setVerticalAlignment(VerticalAlignType.Center);

sheet.getCellRange(“A1:B1”).getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);

sheet.getCellRange(“B2:C5”).getCellStyle().setNumberFormat(“\”¥\”#,##0”);

//添加餅圖

Chart chart = sheet.getCharts().add(ExcelChartType.Pie);

//設置圖表數據區域

chart.setDataRange(sheet.getCellRange(“B2:B5”));

chart.setSeriesDataFromRange(false);

//設置圖表位置

chart.setLeftColumn(3);

chart.setTopRow(1);

chart.setRightColumn(11);

     chart.setBottomRow(20);

//設置圖表標題

chart.setChartTitle(“年銷售額”);

chart.getChartTitleArea().isBold(true);

chart.getChartTitleArea().setSize(12);

//設置系列標籤

ChartSerie cs = chart.getSeries().get(0);

cs.setCategoryLabels(sheet.getCellRange(“A2:A5”));

cs.setValues(sheet.getCellRange(“B2:B5”));

cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);

chart.getPlotArea().getFill().setVisible(false);

 //保存文檔

workbook.saveToFile(“output/PieChart.xlsx”, ExcelVersion.Version2016);

}

}

餅圖創建效果:

excel餅狀圖效果

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/287448.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-23 13:07
下一篇 2024-12-23 13:07

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論