JFreeChat学习总结.docx
- 文档编号:8691686
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:10
- 大小:32.67KB
JFreeChat学习总结.docx
《JFreeChat学习总结.docx》由会员分享,可在线阅读,更多相关《JFreeChat学习总结.docx(10页珍藏版)》请在冰豆网上搜索。
JFreeChat学习总结
1、JFreeChart是什么
JFreeChart是JFreeChart公司在开源网站SourceF上的一个项目,该公司的主要产品有如下:
1、JFreeReport:
报表解决工具
2、JFreeChart:
Java图形解决方案(Application/Applet/Servlet/Jsp)
3、JCommon:
JFreeReport和JFreeChart的公共类库
4、JFreeDesigner:
JFreeReport的报表设计工具
我们可以从jfree官方网站上获取最新版本和相关资料(但是jfree的document需要40美金才能获取),
获取地址:
http:
//www.jfree.org/jfreechart/index.html(同时可以获得简明介绍)
2、用JFreeChart可以做什么
JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面:
piecharts(2Dand3D):
饼图(平面和立体)
barcharts(regularandstacked,withanoptional3Deffect):
柱状图
lineandareacharts:
曲线图
scatterplotsandbubblecharts
timeseries,high/low/open/closechartsandcandlestickcharts:
时序图
combinationcharts:
复合图
Paretocharts
Ganttcharts:
甘特图
windplots,meterchartsandsymbolcharts
wafermapcharts
(态图表,饼图(二维和三维),柱状图(水平,垂直),线图,点图,时间变化图,甘特图,股票行情图,混和图,温度计图,刻度图等常用商用图表)
图形可以导出成PNG和JPEG格式,同时还可以与PDF和EXCEL关联
3、使用JFreechart在项目中如何配置
1、解压jfreechart_0.9.21.zip到指定位置,其中source是jfreechart的源码,jfreechart-0.9.21-demo.jar
是例子程序(该部分留给大家自己去研究)
2、为了配置成功,我们需要关注的文件有如下三个:
jfreechart-0.9.21.jar、libjcommon-0.9.6.jar、
libgnujaxp.jar
3、如果是Application开发,把上述三个文件拷贝到%JAVA_HOME%LIB中,同时在环境变量CLASSPATH中加入
如果是WEB开发,以TOMCAT中的一个WEB项目TEST为例子说明:
把上述三个文件拷贝到TESTWEB-INFLIB中,然后修改TESTWEB-INFweb.xml文件,在其中加入如下代码:
至此jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。
这里值得提出的是jfreechart的类
结构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一样,有时候可能需要查源码。
如果
是中文显示的时候可能依据观感需要改变源码的字体,不过我个人觉得这个版本比以前版本要好一些。
4、JFreechart的方法有哪些
核心类主要有:
org.jfree.chart.JFreeChart:
图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。
JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象
org.jfree.data.category.XXXDataSet:
数据集对象,用于提供显示图表所用的数据。
根据不同类型的图表对应着很多类型的数据集对象类
org.jfree.chart.plot.XXXPlot:
图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持
org.jfree.chart.axis.XXXAxis:
用于处理图表的两个轴:
纵轴和横轴
org.jfree.chart.render.XXXRender:
负责如何显示一个图表对象
org.jfree.chart.urls.XXXURLGenerator:
用于生成Web图表中每个项目的鼠标点击链接
XXXXXToolTipGenerator:
用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类
5、选择常用的图并做出例子
1、pie charts,代码如下
/**
* Description:
This application is the first jfreechart
* authort:
谢莫锋
* Datetime:
20058-02-11
*/
package demo;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.data.general.DefaultPieDataset;
public class FirstJFreeChart {
public FirstJFreeChart() {
}
public static void main(String[] args){
DefaultPieDataset dpd = new DefaultPieDataset();
dpd.setValue("管理人员",25);
dpd.setValue("市场人员",25);
dpd.setValue("开发人员",45);
dpd.setValue("其他人员",5);
//Create JFreeChart object
//参数可以查看源码
JFreeChart pieChart = ChartFactory.createPieChart("CityInfoPort公司组织架构图",dpd,true,true,false);
ChartFrame pieFrame = new ChartFrame("CityInfoPort公司组织架构图",pieChart);
pieFrame.pack();
pieFrame.setVisible(true);
}
}
上面例子可以进一步改进,如下:
/**
* Description:
This application is the first jfreechart
* authort:
谢莫锋
* Datetime:
20058-02-11
*/
package com.cityinforport.demo;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import java.awt.Font;
import javax.swing.*;
public class FirstJFreeChart extends ApplicationFrame {
//构造函数
public FirstJFreeChart(String s){
super(s);
setContentPane(createDemoPanel());
}
public static void main(String[] args){
FirstJFreeChart fjc = new FirstJFreeChart("CityInfoPort公司组织架构图");
fjc.pack();
RefineryUtilities.centerFrameOnScreen(fjc);
fjc.setVisible(true);
}
//生成饼图数据集对象
public static PieDataset createDataset(){
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
defaultpiedataset.setValue("管理人员",10.02D);
defaultpiedataset.setValue("市场人员",20.23D);
defaultpiedataset.setValue("开发人员",60.02D);
defaultpiedataset.setValue("OEM人员",10.02D);
defaultpiedataset.setValue("其他人员",5.11D);
return defaultpiedataset;
}
//生成图表主对象JFreeChart
public static JFreeChart createChart(PieDataset piedataset){
//定义图表对象
JFreeChart jfreechart = ChartFactory.createPieChart("CityInfoPort公司组织架构图",piedataset,true,true,false);
//获得图表显示对象
PiePlot pieplot = (PiePlot)jfreechart.getPlot();
//设置图表标签字体
pieplot.setLabelFont(new Font("SansSerif",Font.BOLD,12));
pieplot.setNoDataMessage("No data available");
pieplot.setCircular(true);
pieplot.setLabelGap(0.01D);//间距
return jfreechart;
}
//生成显示图表的面板
public static JPanel createDemoPanel(){
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
}
}
2.JSP
一、饼图
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
directive.pageimport="org.jfree.data.category.CategoryDataset"/> directive.pageimport="org.jfree.data.general.DatasetUtilities"/> directive.pageimport="org.jfree.chart.JFreeChart"/> directive.pageimport="org.jfree.chart.ChartFactory"/> directive.pageimport="org.jfree.chart.plot.CategoryPlot"/> directive.pageimport="java.awt.Color"/> directive.pageimport="org.jfree.chart.axis.CategoryAxis"/> directive.pageimport="java.awt.Font"/> directive.pageimport="java.io.PipedReader"/> directive.pageimport="org.jfree.chart.servlet.ServletUtilities"/> directive.pageimport="org.jfree.data.general.PieDataset"/> directive.pageimport="org.jfree.data.general.DefaultPieDataset"/> <% String[]rowKeys=null;//柱数据 String[]columnKeys=null;//刻度数据 rowKeys=newString[]{"219.146.1.196","219.146.10.105","219.146.10.116","219.146.10.73"}; columnKeys=newString[]{"2007-02-03","2007-02-04"}; double[][]data=newdouble[rowKeys.length][columnKeys.length]; data=newdouble[][]{ {1022.0,856.0},{676.0,13563.0},{12827.0,10576.0},{0.0,100.0} }; DefaultPieDatasetdataset=newDefaultPieDataset(); for(intm=0;m dataset.setValue(rowKeys[m],data[m][0]); } JFreeChartchart=ChartFactory.createPieChart3D( "thisistitle......", dataset, true, false, false ); chart.setBackgroundPaint(Color.CYAN); chart.setBorderPaint(Color.RED); chart.setBorderVisible(true); Stringfilename=ServletUtilities.saveChartAsPNG(chart,850,550,null,session); StringgraphURL=request.getContextPath()+"/xx? filename="+filename; %> 二、柱图 <%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%> directive.pageimport="org.jfree.data.general.DatasetUtilities"/> directive.pageimport="org.jfree.chart.JFreeChart"/> directive.pageimport="org.jfree.chart.ChartFactory"/> directive.pageimport="org.jfree.chart.plot.PlotOrientation"/> directive.pageimport="java.awt.Color"/> directive.pageimport="org.jfree.chart.plot.CategoryPlot"/> directive.pageimport="org.jfree.chart.axis.CategoryAxis"/> directive.pageimport="org.jfree.chart.axis.CategoryLabelPositions"/> directive.pageimport="org.jfree.chart.axis.NumberAxis"/> directive.pageimport="org.jfree.chart.servlet.ServletUtilities"/> directive.pageimport="org.jfree.data.category.CategoryDataset"/> directive.pageimport="org.jfree.chart.renderer.category.BarRenderer3D"/> directive.pageimport="org.jfree.chart.labels.StandardCategoryItemLabelGenerator"/> directive.pageimport="org.jfree.chart.axis.AxisLocation"/> directive.pageimport="java.text.DecimalFormat"/> <% String[]rowInfo=newString[]{"one","two"}; String[]colInfo=newString[]{"first","second"}; double[][]dataInfo=newdouble[2][2]; dataInfo=newdouble[][]{ {1022.0,856.0},{676.0,13563.0} }; CategoryDatasetdata=DatasetUtilities.createCategoryDataset(rowInfo,colInfo,dataInfo); JFreeChartchart=ChartFactory.createBarChart3D("thisistest......", "row", "col", data, PlotOrientation.VERTICAL, true,false,false); chart.setAntiAlias(true); chart.setBackgroundPaint(Color.WHITE); chart.setBorderPaint(Color.BLACK); chart.setBorderVisible(true); //图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持 CategoryPlotplot=chart.getCategoryPlot(); plot.setDomainGridlinePaint(Color.RED);//横坐标网格线白色 plot.setDomainGridlinesVisible(true);//可见 plot.setBackgroundPaint(Color.CYAN); //用于处理图表的两个轴: 纵轴和横轴 CategoryAxisaxis=plot.getDomainAxis(); axis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); axis.setAxisLinePaint(Color.RED); //axis.setLabel("asdfasdfa"); //axis.setUpperMargin(5); axis.setTickMarksVisible(true); axis.setAxisLineVisible(true); NumberAxisnumberaxis=(NumberAxis)plot.getRangeAxis(); numberaxis.setAutoTickUnitSelection(true); numberaxis.setAutoRangeIncludesZero(false); BarRenderer3Drenderer=newBarRenderer3D(); renderer.setItemLabelGenerator(newStandardCategoryItemLabelGenerator()); renderer.setItemLabelsVisible(true); renderer.setBaseOutlinePaint(Color.BLACK); //设置Wall的颜色 renderer.setWallPaint(Color.GREEN); //设置每种柱的颜色 //renderer.setSeriesPaint(0,newColor(0,0,255)); //renderer.setSer
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JFreeChat 学习 总结