资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,JFreeChart,John Rain,gjwm0826,简介,图表实例,下载和安装,JFreeChart,使用,JFreeChart,饼图,直方条形图,折线图,时序图,定制图表,动态图,图表工具条,图表条目标签,多轴和数据源图表,组合图表,数据源和,JDBC,导出图表为,PDF,导出图表为,SVG,格式,Applet,Servlets,JFreeChart,相关技术,包,使用,JFreeChart,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,概述,局限性,简介,对于大多数的图表类型来说,,JFreeChart,允许在图表的每个条目上、或者内部、或者附近显示条目标签。例如,下图 在每个条形图上显示出了真实的值。,概述,如何让条目标签可视(仅限于支持条目标签的图表类型),如何改变条目标签的外观(字体和颜色),如何指定条目标签的位置,如何定制条目标签的文本,忠告:使用上面的特征时,要谨慎。图表是期望用来分析总结数据的,如果觉得在图表上显示真实数据是非常有必要的话,那数据应使用一个表格格式显示更为合适。,概述,概述,局限性,简介,条目标签的使用是有很多局限性的:,一些,renderer,不支持条目标签,轴范围的自动调节,忽略了条目标签的自动调整,如果图表的周围没有足够的空间(使用方法,setUpperMargin(),或,setLowerMargin(),进行了相应的调整),那么一些图表条目标签在图表上显示不出来。,相信,在以后的,JFreeChart,版本中,这些限制问题将被解决。,局限性,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,概述,创建一个条目标签并赋值,所有的系列显示条目标签,为选择的系列显示条目标签,问题与解决,显示条目标签,条目标签默认是不显示的,因此需要使用,renderer,进行创建和显示条目标签。这主要有以下两个步骤:,分配一个,CategoryItemLabelGenerator,或,XYItemLabelGenerator,给,renderer,这是一个负责创建标签的对象。,在,renderer,里面设置一个标签可视的标志。可以针对全部系列进行设置,也可以针对具体的每一个系列进行设置。,此外,可以定制条目标签的位置、字体和颜色。,概述,概述,创建一个条目标签并赋值,所有的系列显示条目标签,为选择的系列显示条目标签,问题与解决,显示条目标签,使用,renderer,分配的一个标签产生器创建条目标签(这与图表工具条的机制是相同的)。,下面代码说了将一个标签产生器指派给,CategoryItemRenderer,:,同样的,将一个产生器指派给,XYItemRenderer,,代码如下:,创建一个条目标签并赋值,可以在标准产生器的构造函数中定制不同的行为。当然了,也可以创建总计的产生器,创建一个条目标签并赋值,概述,创建一个条目标签并赋值,所有的系列显示条目标签,为选择的系列显示条目标签,问题与解决,显示条目标签,方法,renderer.setBaseItemLabelsVisible(false),是控制着条目标签的显示。对于,CategoryItemRenderer,:,同样对于:,XYItemRenderer,一旦设置,这个标志优先管理在所有地方对每一系列做的设置,主要为了应用每一系列的设置。可以设置个标志为,null,所有的系列显示条目标签,概述,创建一个条目标签并赋值,所有的系列显示条目标签,为选择的系列显示条目标签,问题与解决,显示条目标签,可以控制图表的每一个系列的条目标签是否显示。例如:如下图仅显示第一系列条目标签。,为选择的系列选择条目标签,下面代码可以设置如上效果:,注意:上面代码中对全部的系列设置为,null,这一点非常重要,因为全部系列的标志控制每一个系列的标志。,为选择的系列选择条目标签,概述,创建一个条目标签并赋值,所有的系列显示条目标签,为选择的系列显示条目标签,问题与解决,显示条目标签,如果按照上面的步骤操作,你仍然未看见条目标签显示在图表上,那么我们从以下几个方面进行考虑:,Renderere,必须需要一个标签产生器,这是一个用来创建每一个标签的文本条目的对象。,一些,renderer,不支持条目标签(具体参考,renderer,相关的文档),问题与解决,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,概述,改变条目标签的字体,改变条目标签的颜色,条目标签外观,可以通过改变条目的颜色、字体来改变图表条目标签的外观。正如其他,renderer,属性一样,属性的设置可以是全部的系列,可以是具体某一系列。,在,JFreeChart,目前的版本中,不能设置标签的背景颜色,也不能指定标签的边框。这些在以后的版本中会得到解决。,概述,概述,改变条目标签的字体,改变条目标签的颜色,条目标签外观,为了在所有的系列中改变条目标签的字体,可以使用下面的代码:,同样,也可以为单个系列设置字体:,注意:,renderer.setBaseItemLabelFont(null),方法会出错。,改变条目标签的字体,概述,改变条目标签的字体,改变条目标签的颜色,条目标签外观,改变条目标签的颜色,我们可以使用下面的代码:,同样的,可以为单独每一系列设置颜色:,注意:,renderer.setBaseItemLabelPaint(null);,方法会出错。,改变条目标签的颜色,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,概述,条目标签的位置,标签文本的位置,标签旋转点,标签旋转角度,条目标签位置,条目标签的位置是通过,ItemLabelPosition,对象的四个属性来控制的。,可以通过接口,CategoryItemRenderer,的方法来独立定义条目标签的正负点位置:,概述,理解这些属性如何影响独立标签的最终位置的关键是了解,JFreeChart,里面条目标签的特征。四个特征是:,条目标签点,决定标签的起始位置,文本点,标签里的文本相对于条目标签的位置。,旋转点,标签文本旋转的点位置,旋转角度,标签的旋转角度。,概述,概述,条目标签的位置,标签文本的位置,标签旋转点,标签旋转角度,条目标签位置,设置条目标签位置的目的,主要是为了找出标签在图表上贴向数据条目的一个点(,x,y,)位置。同时在画图表时,该标签也被画在该点处。,条目标签的位置,概述,条目标签的位置,标签文本的位置,标签旋转点,标签旋转角度,条目标签位置,标签文本的位置,主要取决于上面讲的标签位置。可以将标签文本在标签里设置在右上部、或左下部等,运行,JCommon,包内的,org.demo.package,下面的,DrawStringDemo,应用,可以更好的理解标签文本在标签内是如何放置的。,标签文本的位置,概述,条目标签的位置,标签文本的位置,标签旋转点,标签旋转角度,条目标签位置,在标签上定义了一个旋转点,用于旋转标签。在,DrawStringDemo,实例中很好演示了这个特征。,标签旋转点,概述,条目标签的位置,标签文本的位置,标签旋转点,标签旋转角度,条目标签位置,旋转角度定义了标签沿旋转点旋转的角度。该角度为弧度。,标签旋转角度,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,概述,实现一个自定义的标签产生器,定制条目标签文本,定制条目标签文本,需要依赖用,JFreeChart,里的标签产生器来为条目标签创建文本。如果要想完全控制标签文本,需要编写自己的标签产生器,需要实现接口,CategoryItemLabelGenerator,。,在这一节里,对自定义标签器技术做了简要的讲述,然后用两个实例来说明该技术过程。,概述,概述,实现一个自定义的标签产生器,定制条目标签文本,开发一个自定义标签产生器,需要写一个类,该类 必须实现,CategoryItemLabelGenerator,接口里的方法。,该,renderer,调用该方法获得一个标签的字符串,并且将该字符串传入到当前条目的,CategoryDataset,、序列和种类。这就意味着创建这个标签时,拥有完全的访问权限。,该方法可以返回任意字符串,因此格式化这个字符串。如果不想显示标签,可以设置为,null,。,实现一个自定义的标签产生器,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,概述,源代码,实例,1,在第一个实例中,目的就是当当条目的值大于某个限定的值时,就显示该标签。如图所示。,概述,做到这一点并不困难,需要做以下工作:,写一个实现接口,CategoryItemLabelGenerator,的类,并且实现,generateItemLabel(),方法。该方法实现如果条目的值小于限定值时,返回,null,。,创建该类的实例,将该实例使用,renderer,的方法,setLabelGenerator(),设置到,renderer,中去。,概述,概述,源代码,实例,1,源代码,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,概述,源代码,实例,2,在本实例中,目的是在每个系列的标签上显示出值和百分比值(这个百分比值,这个系列在某一部分的条形直方图或全部条形直方图的总值中的比值)。如下图所示。,概述,该实现中,标签产生器计算出百分比。如果传入构造函数的是一个种类索引,那么这个百分比的基数就是指定种类的当前系列的值。如果种类索引是无效的,那么这个基数就是指定种类的全部系列总和。,标签产生器会默认创建一个百分比格式,一种比较成熟的格式,提供格式化能力。,概述,概述,源代码,实例,2,源代码,演讲完毕,谢谢观看!,内容总结,JFreeChart。对于大多数的图表类型来说,JFreeChart 允许在图表的每个条目上、或者内部、或者附近显示条目标签。如何让条目标签可视(仅限于支持条目标签的图表类型)。条目标签的使用是有很多局限性的:。条目标签默认是不显示的,因此需要使用 renderer 进行创建和显示条目标签。在 renderer 里面设置一个标签可视的标志。可以针对全部系列进行设置,也可以针对具体的每一个系列进行设置。同样的,将一个产生器指派给 XYItemRenderer,代码如下:。可以在标准产生器的构造函数中定制不同的行为。可以控制图表的每一个系列的条目标签是否显示。为选择的系列选择条目标签。如果按照上面的步骤操作,你仍然未看见条目标签显示在图表上,那么我们从以下几个方面进行考虑:。一些renderer不支持条目标签(具体参考renderer相关的文档)。可以通过改变条目的颜色、字体来改变图表条目标签的外观。演讲完毕,谢谢观看,
展开阅读全文