欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
JFreeChart -- 柱狀圖

不知道 JFreeChart 項目組出于什么目的,他們提供的 sample code 里面的例子給人感覺(jué)就是亂,同樣的結果可以用不同方式、使用不的方法。再加上網(wǎng)上流傳的 JFreeChart 舊的使用方法,使剛接觸 JFreeChart 的朋友進(jìn)到 JFreeChart 中不花一些時(shí)間很難理出一個(gè)頭緒來(lái)。

前面已經(jīng)介紹過(guò) JFreeChart 生成餅狀圖,可能由于上面提到的原因,有些朋友來(lái)信和留言希望介紹 JFreeChart 如何生成柱狀圖。抄襲別人一句話(huà):Help others as well as to help myself。這次我們介紹使用 JFreeChart 生成柱狀圖,首先從一個(gè)最簡(jiǎn)單的例子開(kāi)始。

一 最簡(jiǎn)單的例子

為了降低門(mén)檻,讓大家心理有個(gè)底,先介紹一個(gè)簡(jiǎn)單的不能再簡(jiǎn)單的例子,圖片中的各類(lèi)屬性都采用默認值。

<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="org.jfree.chart.ChartFactory,
                 org.jfree.chart.JFreeChart,
                 org.jfree.chart.plot.PlotOrientation,
                 org.jfree.chart.servlet.ServletUtilities,
                 org.jfree.data.DefaultCategoryDataset"%>
<%
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(300, "廣州", "蘋(píng)果");
dataset.addValue(200, "廣州", "梨子");
dataset.addValue(500, "廣州", "葡萄");
dataset.addValue(340, "廣州", "芒果");
dataset.addValue(280, "廣州", "荔枝");

JFreeChart chart = ChartFactory.createBarChart3D("水果銷(xiāo)量統計圖",
                  "水果",
                  "銷(xiāo)量",
                  dataset,
                  PlotOrientation.VERTICAL,
                  false,
                  false,
                  false);

String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">

這個(gè) JSP 程序運行的結果如下圖


圖 一

二 柱狀圖高級特性

上面的程序簡(jiǎn)單,但生成的柱狀圖也很簡(jiǎn)單。更多的時(shí)候,我們可能需要不同的效果。 org.jfree.chart.ChartFactory 這個(gè)工廠(chǎng)類(lèi)有 createBarChart, createStackedBarChart, createBarChart3D, createStackedBarChart3D 這幾個(gè)工廠(chǎng)方法創(chuàng )建不同類(lèi)型的柱狀圖。關(guān)于這四個(gè)方法的 JFreeChart 的 Java Doc API 文檔有詳細說(shuō)明,比較重要的是 PlotOrientation.VERTICAL 讓平行柱垂直顯示,而 PlotOrientation.HORIZONTAL 則讓平行柱水平顯示。

幾個(gè)對柱狀圖影響較大的幾個(gè)類(lèi),它們分別是:
org.jfree.chart.axis.CategoryAxis
org.jfree.chart.axis.ValueAxis
org.jfree.chart.renderer.BarRenderer
org.jfree.chart.renderer.BarRenderer3D

我們還是以實(shí)例來(lái)說(shuō)明這幾個(gè)類(lèi),先來(lái)假設一個(gè)需要統計的數據表:

  北京 上海 廣州 成都 深圳
蘋(píng)果 672 766 223 540 126
梨子 325 521 210 340 106
葡萄 332 256 523 240 526

根據上表數據,首先構造 CategoryDataset, 這里不再使用上面簡(jiǎn)單例子里面的 DefaultCategoryDataset 類(lèi),而是 DatasetUtilities 更有效的構造 CategoryDataset,如下列代碼:

double[][] data = new double[][] {{672, 766, 223, 540, 126}, {325, 521, 210, 340, 106}, {332, 256, 523, 240, 526}};
String[] rowKeys = {"蘋(píng)果","梨子","葡萄"};
String[] columnKeys = {"北京","上海","廣州","成都","深圳"};
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);

用上面的 dataset 生成的 3D 柱狀圖


圖 二

org.jfree.chart.axis.CategoryAxis

CategoryAxis domainAxis = plot.getDomainAxis();
//設置 columnKey 是否垂直顯示
domainAxis.setVerticalCategoryLabels(true);
//設置距離圖片左端距離
domainAxis.setLowerMargin(0.1);
//設置距離圖片右端距離
domainAxis.setUpperMargin(0.1);
//設置 columnKey 是否間隔顯示
domainAxis.setSkipCategoryLabelsToFit(true);
plot.setDomainAxis(domainAxis);

上面代碼產(chǎn)生的效果如下圖,注意與圖二的區別。


圖 三

org.jfree.chart.axis.ValueAxis

ValueAxis rangeAxis = plot.getRangeAxis();
//設置最高的一個(gè)柱與圖片頂端的距離
rangeAxis.setUpperMargin(0.15);
//設置最低的一個(gè)柱與圖片底端的距離
//rangeAxis.setLowerMargin(0.15);
plot.setRangeAxis(rangeAxis);

上面代碼產(chǎn)生的效果如下圖,注意與圖二的區別。


圖 四

org.jfree.chart.renderer.BarRenderer3D

BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.BLACK);
//設置 Wall 的顏色
renderer.setWallPaint(Color.gray);
//設置每種水果代表的柱的顏色
renderer.setSeriesPaint(0, new Color(0, 0, 255));
renderer.setSeriesPaint(1, new Color(0, 100, 255));
renderer.setSeriesPaint(2, Color.GREEN);
//設置每種水果代表的柱的 Outline 顏色
renderer.setSeriesOutlinePaint(0, Color.BLACK);
renderer.setSeriesOutlinePaint(1, Color.BLACK);
renderer.setSeriesOutlinePaint(2, Color.BLACK);
//設置每個(gè)地區所包含的平行柱的之間距離
renderer.setItemMargin(0.1);
//顯示每個(gè)柱的數值,并修改該數值的字體屬性
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelFont(new Font("黑體",Font.PLAIN,12));
renderer.setItemLabelsVisible(true);

上面代碼產(chǎn)生的效果如下圖,注意與圖二的區別。


圖 五

補充兩個(gè)有用的方法

補充 org.jfree.chart.plot.CategoryPlot 的兩個(gè)方法,這兩個(gè)方法對所有類(lèi)型的圖表都有作用,因為在前面沒(méi)有介紹,這里補充一下。

//設置地區、銷(xiāo)量的顯示位置
plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);

上面代碼產(chǎn)生的效果如下圖,注意與圖二的區別。


圖 六

三 完整范例

前面都是一些代碼片段,現在把這些片段組合成一個(gè)完整范例。

<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.awt.Color,
                java.awt.Font,
                org.jfree.chart.ChartFactory,
                org.jfree.chart.JFreeChart,
                org.jfree.chart.plot.PlotOrientation,
                org.jfree.chart.servlet.ServletUtilities,
                org.jfree.data.CategoryDataset,
                org.jfree.data.DatasetUtilities,
                org.jfree.chart.plot.CategoryPlot,
                org.jfree.chart.axis.CategoryAxis,
                org.jfree.chart.axis.ValueAxis,
                org.jfree.chart.renderer.BarRenderer3D,
                org.jfree.chart.labels.StandardCategoryItemLabelGenerator,
                org.jfree.chart.axis.AxisLocation"%>
<%
double[][] data = new double[][] {{672, 766, 223, 540, 126},{325, 521, 210, 340, 106},{332, 256, 523, 240, 526}};
String[] rowKeys = {"蘋(píng)果","梨子","葡萄"};
String[] columnKeys = {"北京","上海","廣州","成都","深圳"};
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);

JFreeChart chart = ChartFactory.createBarChart3D("水果銷(xiāo)量圖統計",
                  null,
                  null,
                  dataset,
                  PlotOrientation.VERTICAL,
                  true,false,false);
chart.setBackgroundPaint(Color.WHITE);
CategoryPlot plot = chart.getCategoryPlot();

CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setVerticalCategoryLabels(false);
plot.setDomainAxis(domainAxis);

ValueAxis rangeAxis = plot.getRangeAxis();
//設置最高的一個(gè) Item 與圖片頂端的距離
rangeAxis.setUpperMargin(0.15);
//設置最低的一個(gè) Item 與圖片底端的距離
rangeAxis.setLowerMargin(0.15);
plot.setRangeAxis(rangeAxis);

BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.BLACK);
//設置 Wall 的顏色
renderer.setWallPaint(Color.gray);
//設置每種水果代表的柱的顏色
renderer.setSeriesPaint(0, new Color(0, 0, 255));
renderer.setSeriesPaint(1, new Color(0, 100, 255));
renderer.setSeriesPaint(2, Color.GREEN);
//設置每個(gè)地區所包含的平行柱的之間距離
renderer.setItemMargin(0.1);
//顯示每個(gè)柱的數值,并修改該數值的字體屬性
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer);

//設置柱的透明度
plot.setForegroundAlpha(0.6f);
//設置地區、銷(xiāo)量的顯示位置
plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);

String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%s>
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">

看看程序運行的結果吧:


圖 七

三 總結

我只介紹了少量的方法,更多的請參考 JFreeChart 的 Java Doc API 文檔和 Sample Code。文中的有些關(guān)于圖表的術(shù)語(yǔ)不知道該如何正確的表達,如果你有任何關(guān)于本文的想法,可以與我聯(lián)系 wayne@sentom.net.

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
JFreeChart在JSP中的應用實(shí)例
jfreechart形成各種圖
JFreeChart中柱狀圖的詳細設置
jfreechart熱點(diǎn)圖完整無(wú)亂碼java-jsp版(柱狀圖)帶鼠標提示
JFreeChart柱狀圖3D多色百分比JSP輸出JPG代碼
第一個(gè)JFreeChart實(shí)例
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久