利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)
利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)
通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折线图。如果想生成普通效果的折线图,需要通过工厂类ChartFactory的createLineChart()方法获得JFreeChart类的实例;如果想生成3D效果的折线图,需要通过工厂类ChartFactory的createLineChart3D()方法获得JFreeChart类的实例。这两个方法的入口参数是完全相同的,各个入口参数的类型及功能请参见14.2.1节的表14.2。
可以分别通过绘图区对象CategoryPlot的getDomainAxis()方法和getRangeAxis()方法,获得横轴对象和纵轴对象,通过得到的轴对象可以设置绘制坐标轴的相关属性,常用方法及实现功能如表14.4所示。
表14.4 设置坐标轴绘制属性的部分通用方法
通 用 方 法
实 现 功 能
setAxisLineStroke(Stroke stroke)
通过该方法可以设置轴线的粗细
setAxisLinePaint(Paint paint)
通过该方法可以设置轴线的颜色
setLabelFont(Font font)
通过该方法可以设置坐标轴标题的字体
setLabelPaint(Paint paint)
通过该方法可以设置坐标轴标题的颜色
纵轴对象还提供了设置坐标最大值的方法setUpperBound(double max),在默认情况下将最大值控制在能够正常绘制统计图的范围内。
通过java.awt.BasicStroke类可以绘制出各种各样的线段,大体分为实线段和虚线段,可控的绘制条件包括线条的宽度、线段端点的风格、折线段的折点风格、虚线段的绘制风格和虚线段的绘制偏移量,BasicStroke类提供的所有构造方法如表14.5所示。
表14.5 BasicStroke类提供的所有构造方法
构 造 方 法
使 用 说 明
BasicStroke()
创建一个实线对象,各控制条件均采用默认值,宽度为1.0,端点风格为CAP_SQUARE,折点风格为JOIN_MITER,折点控制值为10.0
BasicStroke(float width)
创建一个指定宽度的实线对象,其他参数仍采用默认值
BasicStroke(float width, int cap, int join)
创建一个指定宽度、指定端点风格和指定折点风格的实线对象,折点控制值仍采用默认值10.0
BasicStroke(float width, int cap, int join, float miterlimit)
创建一个指定宽度、指定端点风格、指定折点风格和指定折点控制值的实线对象
BasicStroke(float width, int cap, int join, float miterlimit, float dash[], float dash_phase)
通过该构造方法,既可以创建实线对象,又可以创建虚线对象,当将参数dash设为null时,创建的即为实线对象,如果将其设为float型数组,创建的则为虚线对象,最后一个参数用来设置开始绘制虚线的偏移量
线段端点的修饰风格有3种,分别由3个常量表示,具体信息如表14.6所示。
表14.6 线段端点修饰风格简介
常 量 名 称
常 量 值
修 饰 办 法
BasicStroke.CAP_BUTT
0
对线段端点不加任何修饰
BasicStroke.CAP_ROUND
1
在线段端点加半圆进行修饰,半圆的直径为线段的宽度
BasicStroke.CAP_SQUARE
2
在线段端点加矩形进行修饰,矩形的宽度为线段宽度的一半,矩形的高度为线段的宽度
线段折点的修饰风格同样有3种,也由3个常量表示,具体信息如表14.7所示。
表14.7 线段折点修饰风格简介
常 量 名 称
常 量 值
修 饰 办 法
BasicStroke.JOIN_MITER
0
对线段折点不加任何修饰
BasicStroke.JOIN_ROUND
1
在折线段的两端加半圆进行修饰,半圆的直径为线段的宽度
BasicStroke.JOIN_BEVEL
2
将组成折点的两条线段的外侧延长至相交,然后填充被包的区域
入口参数dash用来定义虚线,为float型数组,当dash数组由偶数个元素组成时,索引值为偶数的元素值代表虚线段的长度,索引值为奇数的元素值代表两个虚线段之间的空白部分的长度,需要注意的是,数组的索引值是从0开始的;当数组中只有一个元素时,例如dash={6},等同于dash={6,6}。
注意:建议不要为dash数组设定奇数个元素,那样将无法把握虚线的绘制规律,为一个元素的情况除外。
入口参数dash_phase用来定义虚线开始绘制位置的偏移量。以dash={6}为例,如果dash_phase=0,则虚线正常绘制;如果dash_phase=3,则第一段短化线的长度为6-3,后面则正常绘制。
示例14-04 编程类图书年销量折线图分析
下面来看一个绘制折线图的例子,该例绘制的折线图效果如图14.6和图14.7所示。
图14.6 普通效果的折线图 图14.7 3D效果的折线图
代码14-04 光盘位置:光盘\mingrisoft\14\sl\04
下面的代码负责定义折线的绘制风格,并将指定的图例用实线绘制,代码如下:
BasicStroke realLine = new BasicStroke(1.6f);
float dashes[] = { 8.0f }; // 定义虚线数组
BasicStroke brokenLine = new BasicStroke(1.6f, // 线条粗细
BasicStroke.CAP_ROUND, // 端点风格
BasicStroke.JOIN_ROUND, // 折点风格
8.f, // 折点处理办法
dashes, // 虚线数组
0.0f); // 虚线偏移量
int special = 1; // 定义利用需线绘制的图例
for (int i = 0; i < cutline.length; i++) {
if (i == special) {
renderer.setSeriesStroke(i, realLine); // 利用实线绘制
} else {
renderer.setSeriesStroke(i, brokenLine); // 利用虚线绘制
}
}
下面的代码负责获得横轴对象,并设置相关的绘图属性,代码如下:
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setAxisLineStroke(new BasicStroke(1.6f)); // 设置轴线粗细
domainAxis.setAxisLinePaint(Color.BLACK); // 设置轴线颜色
domainAxis.setCategoryLabelPositionOffset(5); // 设置统计种类与轴线的颜色
domainAxis.setLabelFont(new Font("黑体", Font.BOLD, 16)); // 设置坐标轴标题字体
domainAxis.setLabelPaint(Color.BLACK); // 设置坐标轴标题颜色
// 设置坐标轴标题旋转角度,这里并未旋转,目的是告诉读者这个方法
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD);
下面的代码负责获得纵轴对象,并设置相关的绘图属性,代码如下:
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setAxisLineStroke(new BasicStroke(1.6f)); // 设置轴线粗细
rangeAxis.setAxisLinePaint(Color.BLACK); // 设置轴线颜色
rangeAxis.setUpperBound(100.0f); // 设置坐标最大值
rangeAxis.setTickMarkStroke(new BasicStroke(1.6f)); // 设置坐标标记大小
rangeAxis.setTickMarkPaint(Color.BLACK); // 设置坐标标记颜色
rangeAxis.setLabelFont(new Font("黑体", Font.BOLD, 16)); // 设置坐标轴标题字体
rangeAxis.setLabelPaint(Color.BLACK); // 设置坐标轴标题颜色
rangeAxis.setLabelAngle(Math.PI / 2); // 设置坐标轴标题旋转角度
利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)的更多相关文章
- 利用JFreeChart生成时序图(6) (转自 JSP开发技术大全)
利用JFreeChart生成时序图(6) (转自 JSP开发技术大全) 14.6 利用JFreeChart生成时序图 通过JFreeChart插件只能生成普通效果的时序图,利用工厂类ChartFact ...
- 利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全)
利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全) 14.5 利用JFreeChart生成区域图 通过JFreeChart插件只能生成普通效果的区域图,利用工厂类ChartFac ...
- 利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全)
利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全) 14.8 利用JFreeChart生成组合图表 实例位置:光盘\mingrisoft\14\dxyy\02 通过JFree ...
- JFreeChart生成饼形图(3)11 (转自 JSP开发技术大全)
FreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图:如 ...
- 利用JFreeChart生成多轴图表(7) (转自 JSP开发技术大全)
利用JFreeChart生成多轴图表(7) (转自 JSP开发技术大全) 14.7 利用JFreeChart生成多轴图表 通过JFreeChart插件还可以生成拥有多个坐标轴的图表,简称多轴图表.在生 ...
- JFreeChart生成饼形图(3) (转自 JSP开发技术大全)
JFreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图: ...
- JFreeChart生成柱形图(2) (转自 JSP开发技术大全)
JFreeChart生成柱形图(2) (转自 JSP开发技术大全) 14.2 利用JFreeChart生成柱形图14.2.1 利用DefaultCategoryDataset数据集绘制柱形图 通过JF ...
- JFreeChart基础(1) (转自 JSP开发技术大全)
JFreeChart基础(1) (转自 JSP开发技术大全) JFreeChart是一个Java开源项目,是一款优秀的Java图表生成插件,它提供了在Java Application.Servlet和 ...
- JFreeChart 之折线图
JFreeChart 之折线图 一.JFreeChart 简介 JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets ...
随机推荐
- 【2019 1月集训 Day1】回文的后缀
题意: 给定 n,s,求有多少个字符集大小为 s ,长度为 n 的字符串,使得其不存在一个长度大于 1 的回文后缀. 答案对 m 取模. 分析: 考场见到计数题的链式反应,想写暴力—>暴力难写— ...
- db2,差集
--漏报的数据 FROM A LEFT JOIN A′ ON 交集的条件 WHERE A′.xx IS NULL --多报的数据 FROM A′ LEFT JOIN A ON 交集的条件 WHERE ...
- stark组件之显示页面内容搭建(六)
之前主要介绍了前端页面list_fiter功能的显示,但是list_display功能的展示并没有过多介绍,这里介绍一下是如何实现的. 可以看到凡是蓝线圈起来的都是通过字段名反射一个个取出来的,红线的 ...
- Centos7 静态IP配置
先将虚拟机设置为桥接模式: 虚拟机网络将VMnet8设置为NAT模式: 查看本机IP地址,ipconfig,记住ipv4地址和默认网关地址,等会配置的时候要用 启动Centos,进入终端模式,设置IP ...
- Windows Server 2008 R2 Enterprise 安装.NET Framework 4.0
由于服务器上没有.NET 4.0 部署不了 4.0及以上版本的网站,所以给他安排一下: 复制下好的.NET Framework 4.0到服务器开始安装: 安装完,重新打开IIS,已经 ...
- Jmeter关联,正则表达式提取器使用2
正则表达式的用处很多,最基础的用法 1,断言 2,传参(关联) 例子 1.http请求 2正则表达式提取,想要提取列表列中id,一遍打开列表页 如果是1,每次就会取相同的值!匹配数字的权限高于模板$0 ...
- postman工具的应用实战(二)
在接口测试工具中,最好的应该是soapui,jmeter,postman,但是soapui需要安装和破解,当然也是有破解版的,但是不够灵活,jmeter工具 做接口测试还是性能测试,功能测试,都是一个 ...
- HTML5 & CSS3 & font-family
HTML5 & CSS3 & font-family 中文字体的英文名称 宋体* SimSun 黑体* SimHei 微软雅黑* Microsoft YaHei 微软正黑体 http: ...
- Django:(5)分页器 & forms组件
Django组件:分页器 目录结构: urls.py from django.contrib import admin from django.urls import path from app01 ...
- ajax接收json数据到js解析
今天又学到了一点新知识,脑子记不住东西特把它记录下来! 页面ajax请求后台时一般都是返回字符串进行判断,要是返回list或者对象时该怎么办? 第一种:ajax接收到list并返回给前台 js代码: ...