JFreeChart_图表条目标签

上传人:gb****c 文档编号:243152452 上传时间:2024-09-17 格式:PPT 页数:57 大小:335KB
返回 下载 相关 举报
JFreeChart_图表条目标签_第1页
第1页 / 共57页
JFreeChart_图表条目标签_第2页
第2页 / 共57页
JFreeChart_图表条目标签_第3页
第3页 / 共57页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,JFreeChart,John Rain,1,简介,图表实例,下载和安装,JFreeChart,使用,JFreeChart,饼图,直方条形图,折线图,时序图,定制图表,动态图,图表工具条,图表条目标签,多轴和数据源图表,组合图表,数据源和,JDBC,导出图表为,PDF,导出图表为,SVG,格式,Applet,Servlets,JFreeChart,相关技术,包,使用,JFreeChart,2,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,3,概述,局限性,简介,4,对于大多数的图表类型来说,,JFreeChart,允许在图表的每个条目上、或者内部、或者附近显示条目标签。例如,下图 在每个条形图上显示出了真实的值。,概述,5,如何让条目标签可视(仅限于支持条目标签的图表类型),如何改变条目标签的外观(字体和颜色),如何指定条目标签的位置,如何定制条目标签的文本,忠告:使用上面的特征时,要谨慎。图表是期望用来分析总结数据的,如果觉得在图表上显示真实数据是非常有必要的话,那数据应使用一个表格格式显示更为合适。,概述,6,概述,局限性,简介,7,条目标签的使用是有很多局限性的:,一些,renderer,不支持条目标签,轴范围的自动调节,忽略了条目标签的自动调整,如果图表的周围没有足够的空间(使用方法,setUpperMargin(),或,setLowerMargin(),进行了相应的调整),那么一些图表条目标签在图表上显示不出来。,相信,在以后的,JFreeChart,版本中,这些限制问题将被解决。,局限性,8,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,9,概述,创建一个条目标签并赋值,所有的系列显示条目标签,为选择的系列显示条目标签,问题与解决,显示条目标签,10,条目标签默认是不显示的,因此需要使用,renderer,进行创建和显示条目标签。这主要有以下两个步骤:,分配一个,CategoryItemLabelGenerator,或,XYItemLabelGenerator,给,renderer,这是一个负责创建标签的对象。,在,renderer,里面设置一个标签可视的标志。可以针对全部系列进行设置,也可以针对具体的每一个系列进行设置。,此外,可以定制条目标签的位置、字体和颜色。,概述,11,概述,创建一个条目标签并赋值,所有的系列显示条目标签,为选择的系列显示条目标签,问题与解决,显示条目标签,12,使用,renderer,分配的一个标签产生器创建条目标签(这与图表工具条的机制是相同的)。,下面代码说了将一个标签产生器指派给,CategoryItemRenderer,:,同样的,将一个产生器指派给,XYItemRenderer,,代码如下:,创建一个条目标签并赋值,13,可以在标准产生器的构造函数中定制不同的行为。当然了,也可以创建总计的产生器,创建一个条目标签并赋值,14,概述,创建一个条目标签并赋值,所有的系列显示条目标签,为选择的系列显示条目标签,问题与解决,显示条目标签,15,方法,renderer.setBaseItemLabelsVisible(false),是控制着条目标签的显示。对于,CategoryItemRenderer,:,同样对于:,XYItemRenderer,一旦设置,这个标志优先管理在所有地方对每一系列做的设置,主要为了应用每一系列的设置。可以设置个标志为,null,所有的系列显示条目标签,16,概述,创建一个条目标签并赋值,所有的系列显示条目标签,为选择的系列显示条目标签,问题与解决,显示条目标签,17,可以控制图表的每一个系列的条目标签是否显示。例如:如下图仅显示第一系列条目标签。,为选择的系列选择条目标签,18,下面代码可以设置如上效果:,注意:上面代码中对全部的系列设置为,null,这一点非常重要,因为全部系列的标志控制每一个系列的标志。,为选择的系列选择条目标签,19,概述,创建一个条目标签并赋值,所有的系列显示条目标签,为选择的系列显示条目标签,问题与解决,显示条目标签,20,如果按照上面的步骤操作,你仍然未看见条目标签显示在图表上,那么我们从以下几个方面进行考虑:,Renderere,必须需要一个标签产生器,这是一个用来创建每一个标签的文本条目的对象。,一些,renderer,不支持条目标签(具体参考,renderer,相关的文档),问题与解决,21,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,22,概述,改变条目标签的字体,改变条目标签的颜色,条目标签外观,23,可以通过改变条目的颜色、字体来改变图表条目标签的外观。正如其他 renderer属性一样,属性的设置可以是全部的系列,可以是具体某一系列。,在 JFreeChart 目前的版本中,不能设置标签的背景颜色,也不能指定标签的边框。这些在以后的版本中会得到解决。,概述,24,概述,改变条目标签的字体,改变条目标签的颜色,条目标签外观,25,为了在所有的系列中改变条目标签的字体,可以使用下面的代码:,同样,也可以为单个系列设置字体:,注意:,renderer.setBaseItemLabelFont(null),方法会出错。,改变条目标签的字体,26,概述,改变条目标签的字体,改变条目标签的颜色,条目标签外观,27,改变条目标签的颜色,我们可以使用下面的代码:,同样的,可以为单独每一系列设置颜色:,注意:,renderer.setBaseItemLabelPaint(null);,方法会出错。,改变条目标签的颜色,28,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,29,概述,条目标签的位置,标签文本的位置,标签旋转点,标签旋转角度,条目标签位置,30,条目标签的位置是通过,ItemLabelPosition,对象的四个属性来控制的。,可以通过接口,CategoryItemRenderer,的方法来独立定义条目标签的正负点位置:,概述,31,理解这些属性如何影响独立标签的最终位置的关键是了解,JFreeChart,里面条目标签的特征。四个特征是:,条目标签点,决定标签的起始位置,文本点,标签里的文本相对于条目标签的位置。,旋转点,标签文本旋转的点位置,旋转角度,标签的旋转角度。,概述,32,概述,条目标签的位置,标签文本的位置,标签旋转点,标签旋转角度,条目标签位置,33,设置条目标签位置的目的,主要是为了找出标签在图表上贴向数据条目的一个点(x,y)位置。同时在画图表时,该标签也被画在该点处。,条目标签的位置,34,概述,条目标签的位置,标签文本的位置,标签旋转点,标签旋转角度,条目标签位置,35,标签文本的位置,主要取决于上面讲的标签位置。可以将标签文本在标签里设置在右上部、或左下部等,运行 JCommon 包内的 org.demo.package 下面的 DrawStringDemo 应用,可以更好的理解标签文本在标签内是如何放置的。,标签文本的位置,36,概述,条目标签的位置,标签文本的位置,标签旋转点,标签旋转角度,条目标签位置,37,在标签上定义了一个旋转点,用于旋转标签。在 DrawStringDemo 实例中很好演示了这个特征。,标签旋转点,38,概述,条目标签的位置,标签文本的位置,标签旋转点,标签旋转角度,条目标签位置,39,旋转角度定义了标签沿旋转点旋转的角度。该角度为弧度。,标签旋转角度,40,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,41,概述,实现一个自定义的标签产生器,定制条目标签文本,42,定制条目标签文本,需要依赖用 JFreeChart 里的标签产生器来为条目标签创建文本。如果要想完全控制标签文本,需要编写自己的标签产生器,需要实现接口 CategoryItemLabelGenerator。,在这一节里,对自定义标签器技术做了简要的讲述,然后用两个实例来说明该技术过程。,概述,43,概述,实现一个自定义的标签产生器,定制条目标签文本,44,开发一个自定义标签产生器,需要写一个类,该类 必须实现CategoryItemLabelGenerator 接口里的方法。,该 renderer 调用该方法获得一个标签的字符串,并且将该字符串传入到当前条目的CategoryDataset、序列和种类。这就意味着创建这个标签时,拥有完全的访问权限。,该方法可以返回任意字符串,因此格式化这个字符串。如果不想显示标签,可以设置为 null。,实现一个自定义的标签产生器,45,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,46,概述,源代码,实例1,47,在第一个实例中,目的就是当当条目的值大于某个限定的值时,就显示该标签。如图所示。,概述,48,做到这一点并不困难,需要做以下工作:,写一个实现接口,CategoryItemLabelGenerator,的类,并且实现,generateItemLabel(),方法。该方法实现如果条目的值小于限定值时,返回,null,。,创建该类的实例,将该实例使用,renderer,的方法,setLabelGenerator(),设置到,renderer,中去。,概述,49,概述,源代码,实例1,50,源代码,51,简介,显示条目标签,条目标签外观,条目标签位置,定制条目标签文本,实例,1,实例,2,图,表条目标签,52,概述,源代码,实例2,53,在本实例中,目的是在每个系列的标签上显示出值和百分比值(这个百分比值,这个系列在某一部分的条形直方图或全部条形直方图的总值中的比值)。如下图所示。,概述,54,该实现中,标签产生器计算出百分比。如果传入构造函数的是一个种类索引,那么这个百分比的基数就是指定种类的当前系列的值。如果种类索引是无效的,那么这个基数就是指定种类的全部系列总和。,标签产生器会默认创建一个百分比格式一种比较成熟的格式,提供格式化能力。,概述,55,概述,源代码,实例2,56,源代码,57,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!