jfreechart应用2--柱状图

二.   柱状图

在WebRoot目录下建立bar目录,用来存放柱状图的各个例子。首先在该目录下建立一个sample1.jsp文件,让我们来看一个简单的柱状图的例子,修改后的sample1.jsp的内容如下所示:

<%@ page contentType="text/html;charset=GBK"%><%@ page import="org.jfree.chart.ChartFactory, 
org.jfree.chart.JFreeChart, 
org.jfree.chart.plot.PlotOrientation, 
org.jfree.chart.servlet.ServletUtilities, 
org.jfree.data.category.DefaultCategoryDataset"%><% 
DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
dataset.addValue(610, "广州", "猪肉"); 
dataset.addValue(220, "广州", "牛肉"); 
dataset.addValue(530, "广州", "鸡肉"); 
dataset.addValue(340, "广州", "鱼肉"); 
JFreeChart chart = ChartFactory.createBarChart3D("肉类销量统计图", 
"肉类", 
"销量", 
dataset, 
PlotOrientation.VERTICAL, 
false, 
false, 
false); 
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session); 
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; 
%> 
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">

在浏览器中输入地址:http://localhost:8080/jfreechart/bar/sample1.jsp,可看到如下柱状图: 

上面的这个柱状图比较简单,稍显单调,在有些情况下,我们需要用不同颜色来表示不同的种类,或者在种类上标上具体数值,亦或需要加上3D水晶效果。下面让我们来做更深一步的探讨。接下来让我们看一个用不同颜色来表示不通种类的例子。在WebRoot的bar目录下新建sample2.jsp页面,将其代码修改如下:

<%@ page contentType="text/html;charset=GBK"%><%@ page import="org.jfree.chart.ChartFactory, 
org.jfree.chart.JFreeChart, 
org.jfree.chart.plot.PlotOrientation, 
org.jfree.chart.servlet.ServletUtilities, 
org.jfree.data.category.CategoryDataset, 
org.jfree.data.general.DatasetUtilities"%><% 
double[][] data = new double[][] {{1310}, {720}, {1130}, {440}}; 
String[] rowKeys = {"猪肉", "牛肉","鸡肉", "鱼肉"}; 
String[] columnKeys = {""}; 
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data); 
JFreeChart chart = ChartFactory.createBarChart3D("广州肉类销量统计图", 
"肉类", 
"销量", 
dataset, 
PlotOrientation.VERTICAL, 
true, 
false, 
false); 
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session); 
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; 
%> 
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">

该页面的运行效果如下图所示: 

对比该例与前例,可看出createBarChart3D的倒数第三个参数修改成了true,该参数可用来显示下方的: 。上两例我们显示的只是一个城市的肉类销量,有时候我们有对比显示多个城市的不同肉类,只要将上例稍作修改即可。例如要在图中表示广州、深圳、东莞、佛山四个城市的四个肉类的销售情况,只需要将如下三句稍做修改:

double[][] data =newdouble[][] {{1310}, {720}, {1130}, {440}}; 
String[] rowKeys = {"猪肉", "牛肉","鸡肉", "鱼肉"}; 
String[] columnKeys = {""}; 
例如修改成: 
double[][] data =newdouble[][] {{1310, 1220, 1110, 1000}, 
{720, 700, 680, 640}, 
{1130, 1020, 980, 800}, 
{440, 400, 360, 300}}; 
String[] rowKeys = {"猪肉", "牛肉","鸡肉", "鱼肉"}; 
String[] columnKeys = {"广州", "深圳", "东莞", "佛山"};

在运行该jsp页面,可看到如下界面: 

在上述几例中,在某个柱子上都没有显示相应的数值,下面让我们为每个柱子都加上它的数值,我们新建一个sample4.jsp页面,其内容如下:

<%@ page contentType="text/html;charset=GBK"%><%@ page import="org.jfree.chart.ChartFactory, 
org.jfree.chart.JFreeChart, 
org.jfree.chart.plot.PlotOrientation, 
org.jfree.chart.servlet.ServletUtilities, 
org.jfree.data.category.CategoryDataset, 
org.jfree.data.general.DatasetUtilities, 
org.jfree.chart.plot.*, 
org.jfree.chart.labels.*, 
org.jfree.chart.renderer.category.BarRenderer3D, 
java.awt.*, 
org.jfree.ui.*, 
org.jfree.chart.axis.AxisLocation"%><% 
double[][] data = new double[][] {{1310, 1220, 1110, 1000}, 
{720, 700, 680, 640}, 
{1130, 1020, 980, 800}, 
{440, 400, 360, 300}}; 
String[] rowKeys = {"猪肉", "牛肉","鸡肉", "鱼肉"}; 
String[] columnKeys = {"广州", "深圳", "东莞", "佛山"}; 
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data); 
JFreeChart chart = ChartFactory.createBarChart3D("肉类销量统计图", 
"肉类", 
"销量", 
dataset, 
PlotOrientation.VERTICAL, 
true, 
true, 
false); 
CategoryPlot plot = chart.getCategoryPlot(); 
//设置网格背景颜色 
plot.setBackgroundPaint(Color.white); 
//设置网格竖线颜色 
plot.setDomainGridlinePaint(Color.pink); 
//设置网格横线颜色 
plot.setRangeGridlinePaint(Color.pink); 
//显示每个柱的数值,并修改该数值的字体属性 
BarRenderer3D renderer = new BarRenderer3D(); 
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); 
renderer.setBaseItemLabelsVisible(true); 
//默认的数字显示在柱子中,通过如下两句可调整数字的显示 
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题 
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT)); 
renderer.setItemLabelAnchorOffset(10D); 
//设置每个地区所包含的平行柱的之间距离 
//renderer.setItemMargin(0.3); 
plot.setRenderer(renderer); 
//设置地区、销量的显示位置 
//将下方的“肉类”放到上方 
plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT); 
//将默认放在左边的“销量”放到右方 
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT); 
String filename = ServletUtilities.saveChartAsPNG(chart, 700, 400, null, session); 
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; 
%> 
<img src="<%= graphURL %>" width=700 height=400 border=0 usemap="#<%= filename %>">

运行效果如下所示: 

注意:jfreechart的很多版本不兼容,请大家在运行此例时确认下载了对应的版本。

 

jfreechart应用2--柱状图(作者:百度 被风吹过的日子)的更多相关文章

  1. jfreechart应用3--饼状图 学习(作者:百度 被风吹过的日子)

    jfreechart应用3--饼状图 三. 饼图 在WebRoot目录下建立名为pie的子目录,用来存放本教程中饼图的实例jsp页面.下面让我们来看一个简单的三维饼图.首先在pie目录下建立一个名为s ...

  2. 利用JFreeChart生成简单柱状图(Java)

    package barchartdemo1; import <a href="http://lib.csdn.net/base/javaee" class='replace_ ...

  3. C#自定义事件模拟风吹草摇摆

    这是一个自定义事件的例子.C#.WinForm.Visual Studio 2017.在HoverTreeForm中画一块草地,上面有许多草(模拟).HewenqiTianyi类模拟天气,会引发“风” ...

  4. PCA的数学原理Matlab演示

    关于 PCA(Principal component analysis)主成分分析.是SVD(Singular value decomposition)神秘值分析的一种特殊情况.主要用于数据降维.特征 ...

  5. JFreeChart 之柱状图

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

  6. 基于web的jfreechart的使用

    这个模块的主要步骤就是: 前台通过struts调用后台,通过JFreeChart产生图片格式的图表,存储在某个位置,然后前台jsp再去调用图片. 来开工. JFreeChart的简介大家请百度. 首先 ...

  7. ZT 感触的屌丝职场记 投递人 itwriter 发布于 2013-05-27 09:21 评论(18) 有3402人阅读 原文链接 [收藏] « »   作者@幻想哥呀幻想哥   有一位屌丝男,从小抱着报效祖国的理想上了大学,毕业后干了 IT 行业,高中那时候看文汇报说,搞 IT 的在上

    屌丝职场记 投递人 itwriter 发布于 2013-05-27 09:21 评论(18) 有3402人阅读  原文链接  [收藏]  « » 作者@幻想哥呀幻想哥 有一位屌丝男,从小抱着报效祖国的 ...

  8. 百度云bae安装discuz论坛教程

    作者:孤风一剑   发布:2013-05-11 13:37   栏目:站长在线   点击:6,846次   41条评论 各位草根们有福啦,弄了几天,终于可以在bae上搭建discuz论坛了,下面我就简 ...

  9. arcgis制作风或水流速流向图

    制作风或水流速流向图 风速风向图或流速流向图相信大家都已经见过不少,但不知道有多少人会制作这样炫的专题图,下面这边文章向我们展示了当基本数据U和V矢量被存储时,怎样计算风或水流的速度和方向和对其进行符 ...

随机推荐

  1. httpclient调用webservice接口的方法实例

    这几天在写webservice接口,其他的调用方式要生成客户端代码,比较麻烦,不够灵活,今天学习了一下httpclient调用ws的方式,感觉很实用,话不多说,上代码 http://testhcm.y ...

  2. 洛谷 P3800 Power收集

    题目背景 据说在红雾异变时,博丽灵梦单身前往红魔馆,用十分强硬的手段将事件解决了. 然而当时灵梦在Power达到MAX之前,不具有“上线收点”的能力,所以她想要知道她能收集多少P点,然而这个问题她答不 ...

  3. 【数学】codeforces A. Success Rate

    http://codeforces.com/contest/773/problem/A [思路] 用 (x+a)/(y+b) = p/q 来表示其核心思想,其中a 为做对的题目,b为做的题目,则有x+ ...

  4. Spring Boot配置方式

    Spring提供了xml.注解.Java配置.groovy配置实现Bean的创建和注入. 配置元数据 无论xml配置.注解配置还是Java配置,都被称为配置元数据,所谓元数据即描述数据的数据.元数据本 ...

  5. 移动web页面字体大小二

    按设计稿中的字体大小设置页面字体大小(px),在手机端,因为不同设备会有不同,换算成rem单位.rem是“font size of the root element”,可以通过这篇文章了解http:/ ...

  6. HDTVI,HDCVI

    HDTVI是海康的同轴高清标准,HDCVI是大华的同轴高清标准,二者互相不兼容.

  7. 定制 ArcEngine 要素编辑工具

    来自:http://blog.sina.com.cn/s/blog_4d780fc10101d2d5.html 先初步了解到大概用到的下面的接口和类: IEngineEditor IEngineEdi ...

  8. 学习swift从青铜到王者之swift属性09

    1.结构体常量和类常量的存储属性 let p1 = Person1() //p1.age = 88 不允许修改 //p11.name = "yhx1" 不允许修改 var p11 ...

  9. C/C++实现bmp文件读写

    之前知道点bmp图的格式,然后对8位操作过,然后今天弄了一下24位真彩色的. C++读取.旋转和保存bmp图像文件编程实现 主要是理解bmp文件的格式8/24位的区别 8位图有调色板,24位在文件头和 ...

  10. [Rust] Load a WebAssembly Function Written in Rust and Invoke it from JavaScript

    In this lesson we are going to setup a project from scratch by introducing the JavaScript snippet to ...