您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > jfreechart_java集合培训
YHCIP技术培训研发中心:林隆永培训内容Jfreechart图表开发Java集合框架工程发布图表开发Jfreechart简介开源的JAVA项目作用制作各种各样的图表。如饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等使用环境Servlet、JSP、Applet、JavaAppication目标对Jfreechart的图表开发有一定的认识大概了解Jfreechart的类结构掌握YHCIP图表的开发过程图表组成标题副标题图表区(render)Y轴(rangeAxis)X轴(domainAxis)图示图片区(plot)核心类JFreeChart图表对象,JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象。任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。XXXXXDataset数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类XXXXXPlot图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持。图的功能就是绘制数据项和轴线。这些一般由渲染器代理工作,你可以通过getRenderer()方法获得渲染器。渲染器包括了大多数图形里面数据项的外观表现属性。XXXXXAxis用于处理图表的两个轴:纵轴和横轴XXXXXRenderer负责如何显示一个图表对象(柱,线。。。)XXXXXURLGenerator用于生成Web图表中每个项目的鼠标点击链接XXXXXToolTipGenerator用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类图表开发三步骤准备数据源创建JfreeChart类对象(图片对象)显示图片数据源二维数据CATEGORYVALUELondon54.3NewYork43.4Paris17.9数据源CATEGORYSERIES1SERIES2SERIES3London54.332.153.4NewYork43.454.375.2Paris17.934.837.1三维数据数据源图表类型数据格式饼图PieDataset(DefaultPieDataset)柱状图CatagoryDataset(DefaultCategoryDataset)时间序列图XYDataset(TimeSeriesCollection)折线图CatagoryDataset(DefaultCategoryDataset)、XYDataset(XYSeriesCollection)创建图片对象由ChartFactory工厂类创建各种图表对象例子:JFreeChartchart=ChartFactory.createBarChart(“BarChartDemo”,//图标标题“Category”,//x轴名称“Value”,//y轴名称dataset,//数据源PlotOrientation.VERTICAL,//摆放方向(垂直)true,//是否显示图示true,//是否显示提示(鼠标移过提示)false//是否提供链接);属性设置chart对象属性设置整个图片属性设置,比如图片背景,边框,标题,子标题等。Plot对象属性设置(看代码示例BarExample.java)图片的图表部分属性设置X轴对象设置Y轴对象设置图表渲染器(renderer)鼠标移过提示(tooltips)链接YHCIP图表开发三个步骤一.准备数据源例子:在sqlmap中写查询sql,每条记录的结果为HashMap。!--图片测试--selectid=getPieDataresultClass=java.util.HashMapselectb.aaa103asaaa103,count(a.aab020)asaab020fromab01a,bm_aab020bwherea.aab020=b.aab020groupbya.aab020,b.aaa103/selectYHCIP图表开发创建图表对象OutputDTOoutputDTO=ab01Bpo.getPieList(cForm.getInputDTO(us));Listlist=outputDTO.getDefaultList();JFreeChartchart=YHChart.createPie3D(“单位类型比例,list,aaa103,aab020);//DefaultPieDatasetds=DataSetUtil.toPie(list,aaa103,aab020)//JFreeChartchart=YHChart.createPie3D(“单位类型比例,ds);request.getSession().setAttribute(chart,chart);YHCIP图表开发显示图片cewolf:yhchartimgname=chartheight=300width=600usemap=chartmap/cewolf:yhchartimgMapname=chartmap/注意:yhchartimgMap中的name属性值必须和usemap属性值一样。同一个页面如果有多个图表,名称不能相同。总结Jfreechart开发步骤常用类介绍图类型datasetplotrenderer饼图PieDataset(DefaultPieDataset)PiePlot------柱状图CatagoryDataset(DefaultCategoryDataset)CategoryPlotBarRenderer折线图CatagoryDataset(DefaultCategoryDataset)、XYDataset(XYSeriesCollection)CategoryPlot、XYPlotLineAndShapeRenderer、XYLineAndShapeRenderer时间序列图XYDataset(TimeSeriesCollection)XYPlotXYLineAndShapeRenderer数组CollectionListSetMap容器类图数组和其它容器的区别效率数组是一种效率很高的存储和随机访问对象引用序列的方式一个简单的线性序列大小就固定类型数组可可以保存基本类型,容器不行保存基本类型的能力一个数组对象只能保存一种类型的对象数组和其它容器的区别效率数组是一种效率很高的存储和随机访问对象引用序列的方式一个简单的线性序列大小就固定类型数组可可以保存基本类型,容器不行保存基本类型的能力一个数组对象只能保存一种类型的对象Collection作用:表示一组对象类型:有序无序允许重复禁止重复实现Collection├List│├LinkedList(链表)│├ArrayList(顺序结构动态数组类)│└Vector(向量)│└Stack(堆栈)└SetList接口作用:List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。特点:有序允许有相同元素介绍用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。和下面要提到的Set不同,List允许有相同的元素。除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。List实现ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。和LinkedList一样,ArrayList也是非同步的(unsynchronized)。List实现LinkedList类LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:Listlist=Collections.synchronizedList(newLinkedList(...));List实现Vector类Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。List实现Stack类Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop方法,push()方法是把元素放在栈顶,pop()方法是把栈顶元素删除以后,在返回删除以后的新的栈顶元素。还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。Set接口作用Set是一种不包含重复的元素的Collection(即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素),Set接口不保证维护元素的次序。Set接口HashSet类为快速查找而设计的Set。存入HashSet的对象必须定义hashCode()。采用散列函数对元素进行排序,这是专门为快速查询而设计的TreeSet类:保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。采用红黑树的数据结构进行排序元素;LinkedHashSet类:具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。内部使用散列以加快查询速度,同时使用链表维护元素的次序,使得看起来元素是以插入的顺序保存的Map接口Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个valueMap接口提供3种集合的视图1.key集合,2.一组value集合,3.或者一组key-value映射。Map实现HashMap类HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即nullvalue和nullkey。,但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者loadfacto
本文标题:jfreechart_java集合培训
链接地址:https://www.777doc.com/doc-3770597 .html