利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)

14.4 利用JFreeChart生成折线图

通过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开发技术大全)的更多相关文章

  1. 利用JFreeChart生成时序图(6) (转自 JSP开发技术大全)

    利用JFreeChart生成时序图(6) (转自 JSP开发技术大全) 14.6 利用JFreeChart生成时序图 通过JFreeChart插件只能生成普通效果的时序图,利用工厂类ChartFact ...

  2. 利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全)

    利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全) 14.5 利用JFreeChart生成区域图 通过JFreeChart插件只能生成普通效果的区域图,利用工厂类ChartFac ...

  3. 利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全)

    利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全) 14.8 利用JFreeChart生成组合图表  实例位置:光盘\mingrisoft\14\dxyy\02 通过JFree ...

  4. JFreeChart生成饼形图(3)11 (转自 JSP开发技术大全)

    FreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图:如 ...

  5. 利用JFreeChart生成多轴图表(7) (转自 JSP开发技术大全)

    利用JFreeChart生成多轴图表(7) (转自 JSP开发技术大全) 14.7 利用JFreeChart生成多轴图表 通过JFreeChart插件还可以生成拥有多个坐标轴的图表,简称多轴图表.在生 ...

  6. JFreeChart生成饼形图(3) (转自 JSP开发技术大全)

    JFreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图: ...

  7. JFreeChart生成柱形图(2) (转自 JSP开发技术大全)

    JFreeChart生成柱形图(2) (转自 JSP开发技术大全) 14.2 利用JFreeChart生成柱形图14.2.1 利用DefaultCategoryDataset数据集绘制柱形图 通过JF ...

  8. JFreeChart基础(1) (转自 JSP开发技术大全)

    JFreeChart基础(1) (转自 JSP开发技术大全) JFreeChart是一个Java开源项目,是一款优秀的Java图表生成插件,它提供了在Java Application.Servlet和 ...

  9. JFreeChart 之折线图

    JFreeChart 之折线图 一.JFreeChart 简介 JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets ...

随机推荐

  1. 【2019 1月集训 Day1】回文的后缀

    题意: 给定 n,s,求有多少个字符集大小为 s ,长度为 n 的字符串,使得其不存在一个长度大于 1 的回文后缀. 答案对 m 取模. 分析: 考场见到计数题的链式反应,想写暴力—>暴力难写— ...

  2. db2,差集

    --漏报的数据 FROM A LEFT JOIN A′ ON 交集的条件 WHERE A′.xx IS NULL --多报的数据 FROM A′ LEFT JOIN A ON 交集的条件 WHERE ...

  3. stark组件之显示页面内容搭建(六)

    之前主要介绍了前端页面list_fiter功能的显示,但是list_display功能的展示并没有过多介绍,这里介绍一下是如何实现的. 可以看到凡是蓝线圈起来的都是通过字段名反射一个个取出来的,红线的 ...

  4. Centos7 静态IP配置

    先将虚拟机设置为桥接模式: 虚拟机网络将VMnet8设置为NAT模式: 查看本机IP地址,ipconfig,记住ipv4地址和默认网关地址,等会配置的时候要用 启动Centos,进入终端模式,设置IP ...

  5. Windows Server 2008 R2 Enterprise 安装.NET Framework 4.0

    由于服务器上没有.NET 4.0 部署不了 4.0及以上版本的网站,所以给他安排一下:​ 复制下好的.NET Framework 4.0到服务器开始安装: ​ ​ ​ ​ 安装完,重新打开IIS,已经 ...

  6. Jmeter关联,正则表达式提取器使用2

    正则表达式的用处很多,最基础的用法 1,断言 2,传参(关联) 例子 1.http请求 2正则表达式提取,想要提取列表列中id,一遍打开列表页 如果是1,每次就会取相同的值!匹配数字的权限高于模板$0 ...

  7. postman工具的应用实战(二)

    在接口测试工具中,最好的应该是soapui,jmeter,postman,但是soapui需要安装和破解,当然也是有破解版的,但是不够灵活,jmeter工具 做接口测试还是性能测试,功能测试,都是一个 ...

  8. HTML5 & CSS3 & font-family

    HTML5 & CSS3 & font-family 中文字体的英文名称 宋体* SimSun 黑体* SimHei 微软雅黑* Microsoft YaHei 微软正黑体 http: ...

  9. Django:(5)分页器 & forms组件

    Django组件:分页器 目录结构: urls.py from django.contrib import admin from django.urls import path from app01 ...

  10. ajax接收json数据到js解析

    今天又学到了一点新知识,脑子记不住东西特把它记录下来! 页面ajax请求后台时一般都是返回字符串进行判断,要是返回list或者对象时该怎么办? 第一种:ajax接收到list并返回给前台 js代码: ...