首先要有jfreechart.jar和jcommon-1.0.12.jar兩個包然后在web.xml配置

創(chuàng)新互聯(lián)建站服務項目包括淳安網站建設、淳安網站制作、淳安網頁制作以及淳安網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,淳安網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到淳安省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
servlet
servlet-nameDisplayChart/servlet-name
servlet-classorg.jfree.chart.servlet.DisplayChart/servlet-class
/servlet
servlet-mapping
servlet-nameDisplayChart/servlet-name
url-pattern/DisplayChart/url-pattern
/servlet-mapping
最后是jsp代碼:
%@ 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.category.CategoryDataset,
org.jfree.data.general.DatasetUtilities"%
%
double[][] data = new double[][] {{1310}, {720}, {1130}, {440}};
String[] rowKeys = {"豬肉", "牛肉","雞肉", "魚肉"};
String[] columnKeys = {""};
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
JFreeChart chart = ChartFactory.createBarChart3D("廣州肉類銷量統(tǒng)計圖", "肉類",
"銷量",
dataset,
PlotOrientation.VERTICAL,
true,
false,
false);
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
%
img src="%= graphURL %"width=500 height=300 border=0 usemap="#%= filename %"
用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("編程語言統(tǒng)計", "語言",
"學習人數", 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));//圖片區(qū)與坐標軸的距離
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);
}
}
使用在jsp中用jasperReport、iReport和jfreechart做一個帶有柱狀圖的簡單報表
1.
首先請看這個帖子,上面有一個文檔《JasperReport與Ireport的配置與使用》。
作者寫了一份很詳細地用jasperReport和iReport生成一個簡單報表的文檔,詳細、清楚,如果你是新手,請一定要看。只要試著一步步地做,做出一個不帶柱狀圖、餅狀圖的報表相當容易。特別要注意它上面的傳遞參數$P{},因為我們在用到它。
但是它上面有一個小小的錯誤,是在用JSP生成報表的那一段代碼。請將第一行的那句:去掉。不然總是提示下載一個JSP文件,而不是我們希望生成的報表PDF。
如果你不需要那些柱圖餅圖之類,就不需要往下看了。那份文檔已經很詳細了。
(在這里要特別感謝作者,這份文檔給了我莫大的幫助。我也是我想寫這份總結的原因之一)
2.
下載
1
jasperReport
2
iReport
0.3.0
或0.3.1
建議使用0.3.0,因為0.3.1有一些小BUG。如不生成.jasper文檔(其實生成的是一個沒有后綴名的文檔,chartTool也有一些問題。
3
jfreechart
除了jar文件,它們的API文檔也很有用。特別是jasperReport自帶的DEMO。
@
生成柱狀圖
我們假設你已經按《JasperReport與Ireport的配置與使用》的做法生成了一個可以正確運行的報表,那么我們就可以繼續(xù)了。如果你沒有,請再仔細看它,然后再往下看。
我知道的生成柱狀圖有三種方法,我比較喜歡第三種,但是前兩種也應該了解一下。
1
使用ChartTool。
iReport的工具欄上有一個工具,叫ChartTool。我們點一下它,然后在報表上畫一個報表出來,這時就可以看到一個柱狀的報表了。然后用執(zhí)行一下,看是不是已經生成了柱狀圖了?只可惜這個圖我們沒有辦法改參數,滿足不了我們的需要。(也許有辦法,但我不會,繼續(xù))
2
使用ChartScriptlet
去jasperReport自帶的DEMO中,找一個chart的例子,它使用的就是jfreechart。可以看看它。它的原理是:
在報表上插入一個圖片,賦給它一個變量chartImage。該報表調用了一個類ChartScriptlet,它可以動態(tài)生成一個柱狀圖的圖片對象,賦給chartImage。這樣報表看起來,就會有一個可以按需要設置的柱圖了。
這樣做:在報表上插入一個圖片,再設置一個變量chartImage,為java.awt.Image類型。在圖片的Image
Expresion處設置$V{chartImage}。打開View-Report
Properties-Scriptlet。選擇Use
this
scriptlet
class,設置為ChartScriptlet。然后我們把jasperReport中自帶的Demo中的chart下的ChartScriptlet.class拷到你報表所在的目錄下。運行一下看看,是否有一個餅圖?
我們再到jasperReport的DEMO下的chart目錄下,看一下ChartScriptlet.java文件。你可以修改它,可以生成自己所需要的柱圖、餅圖、帶圖,其它圖等等。如果要從數據庫中讀取數據,可以在這個文件中讀取。
3
自已寫一個類,生成一個柱圖對象,把它作為一個參數傳遞給報表,再生成一個PDF
第二種方法那個Scriptlet類,繼承自另一個類,你只需要重載其中的一個方法afterReportInit()就行了,其它的都不用管。如果是自己的類,你可以把那個Scriptlet中的那些代碼拷過來,但是要有一個方法返回一個Image對象,它就是你所生成好的圖片對象。你也可以向它傳遞參數,這樣對數據庫的操作就可以在別的地方做了。然后把它個Image對象作為參數傳遞給報表,就行了.
JFreeChart是JAVA平臺上的一個開放的圖表繪制類庫。它完全使用JAVA語言編寫,是為applications, applets, servlets 以及JSP等使用所設計。JFreeChart可生成餅圖(pie charts)、柱狀圖(bar charts)、散點圖(scatter plots)、時序圖(time series)、甘特圖(Gantt charts)等等多種圖表,并且可以產生PNG和JPEG格式的輸出,還可以與PDF和EXCEL關聯(lián)。
JFreeChart的主頁地址為:
在這里可以找到最新版本的JFreeChart的相關信息,如說明文檔、下載連接以及示例圖表等。
JFreeChart目前是最好的java圖形解決方案,基本能夠解決目前的圖形方面的需求。
IBM文檔:
Javaeye社區(qū):
文章標題:java代碼柱形圖 java繪制圖形代碼
當前地址:http://www.yijiale78.com/article40/dohioho.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供云服務器、動態(tài)網站、定制開發(fā)、網站營銷、自適應網站、面包屑導航
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)