JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。

JFreeChart截止2011年2月22日为止的相当不错的java图形解决方案,基本能够解决目前的图形方面的需求。本文着重对JFreeChart在Swing客户端界面实现柱形图进行介绍,其它统计图表的使用方法类似,读者可以参考JFreeChart提供的API。程序实现的效果如图:

Java代码:

package Test.JFreeChar;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.GradientPaint;

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.ChartPanel;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.axis.CategoryAxis;

import org.jfree.chart.axis.CategoryLabelPositions;

import org.jfree.chart.axis.NumberAxis;

import org.jfree.chart.labels.StandardCategorySeriesLabelGenerator;

import org.jfree.chart.plot.CategoryPlot;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.chart.renderer.category.BarRenderer;

import org.jfree.data.category.CategoryDataset;

import org.jfree.data.category.DefaultCategoryDataset;

import org.jfree.ui.ApplicationFrame;

import org.jfree.ui.RefineryUtilities;

/**

* JFreeChar柱形图

*

*/

public class BarChartDemo extends ApplicationFrame {

private static final long serialVersionUID = 1L;

public BarChartDemo(String paramString) {

super(paramString);

JPanel localJPanel = createDemoPanel();

localJPanel.setPreferredSize(new Dimension(500, 270));

setContentPane(localJPanel);

}

/**

* 准备绘制柱形图使用的数据集

*/

private static CategoryDataset createDataset() {

String str1 = "First";

String str2 = "Second";

String str3 = "Third";

String str4 = "Category 1";

String str5 = "Category 2";

String str6 = "Category 3";

String str7 = "Category 4";

String str8 = "Category 5";

DefaultCategoryDataset localDefaultCategoryDataset = new DefaultCategoryDataset();

localDefaultCategoryDataset.addValue(1.0D, str1, str4);

localDefaultCategoryDataset.addValue(4.0D, str1, str5);

localDefaultCategoryDataset.addValue(3.0D, str1, str6);

localDefaultCategoryDataset.addValue(5.0D, str1, str7);

localDefaultCategoryDataset.addValue(5.0D, str1, str8);

localDefaultCategoryDataset.addValue(5.0D, str2, str4);

localDefaultCategoryDataset.addValue(7.0D, str2, str5);

localDefaultCategoryDataset.addValue(6.0D, str2, str6);

localDefaultCategoryDataset.addValue(8.0D, str2, str7);

localDefaultCategoryDataset.addValue(4.0D, str2, str8);

localDefaultCategoryDataset.addValue(4.0D, str3, str4);

localDefaultCategoryDataset.addValue(3.0D, str3, str5);

localDefaultCategoryDataset.addValue(2.0D, str3, str6);

localDefaultCategoryDataset.addValue(3.0D, str3, str7);

localDefaultCategoryDataset.addValue(6.0D, str3, str8);

return localDefaultCategoryDataset;

}

/**

* 创建JFreeChart

* @param paramCategoryDataset 数据集

* @return

*/

private static JFreeChart createChart(CategoryDataset paramCategoryDataset) {

JFreeChart localJFreeChart = ChartFactory.createBarChart(

"Bar Chart Demo 1", "Category", "Value", paramCategoryDataset,

PlotOrientation.VERTICAL, true, true, false);

CategoryPlot localCategoryPlot = (CategoryPlot) localJFreeChart

.getPlot();

localCategoryPlot.setDomainGridlinesVisible(true);

localCategoryPlot.setRangeCrosshairVisible(true);

localCategoryPlot.setRangeCrosshairPaint(Color.blue);

NumberAxis localNumberAxis = (NumberAxis) localCategoryPlot

.getRangeAxis();

localNumberAxis.setStandardTickUnits(NumberAxis

.createIntegerTickUnits());

BarRenderer localBarRenderer = (BarRenderer) localCategoryPlot

.getRenderer();

localBarRenderer.setDrawBarOutline(false);

GradientPaint localGradientPaint1 = new GradientPaint(0.0F, 0.0F,

Color.blue, 0.0F, 0.0F, new Color(0, 0, 64));

GradientPaint localGradientPaint2 = new GradientPaint(0.0F, 0.0F,

Color.green, 0.0F, 0.0F, new Color(0, 64, 0));

GradientPaint localGradientPaint3 = new GradientPaint(0.0F, 0.0F,

Color.red, 0.0F, 0.0F, new Color(64, 0, 0));

localBarRenderer.setSeriesPaint(0, localGradientPaint1);

localBarRenderer.setSeriesPaint(1, localGradientPaint2);

localBarRenderer.setSeriesPaint(2, localGradientPaint3);

localBarRenderer

.setLegendItemToolTipGenerator(new StandardCategorySeriesLabelGenerator(

"Tooltip: {0}"));

CategoryAxis localCategoryAxis = localCategoryPlot.getDomainAxis();

localCategoryAxis.setCategoryLabelPositions(CategoryLabelPositions

.createUpRotationLabelPositions(0.5235987755982988D));

return localJFreeChart;

}

/**

* 创建显示柱形图的面板

* @return

*/

public static JPanel createDemoPanel() {

JFreeChart localJFreeChart = createChart(createDataset());

return new ChartPanel(localJFreeChart);

}

public static void main(String[] paramArrayOfString) {

BarChartDemo localBarChartDemo1 = new BarChartDemo(

"JFreeChart: BarChartDemo1.java");

localBarChartDemo1.pack();

RefineryUtilities.centerFrameOnScreen(localBarChartDemo1);

localBarChartDemo1.setVisible(true);

}

}

至此,使用JFreeChart实现的统计柱形图便完成了,JFreeChart为统计图的显示提供了方便的接口,后续文章将会介绍使用JFreeChart实现其它统计图。

【发表评论0条 】

用Java绘制柱形图_Java使用JFreeChart绘制柱形图相关推荐

  1. java条形图_java使用jfreechart绘制条形统计图

    在类中定义一个静态函数,返回统计图jfreechar/ StandardChartTheme standardChartTheme = new StandardChartTheme("CN& ...

  2. java 线型_java使用jfreechart绘制线型统计图

    在类中定义函数,返回要统计的数据: public static DefaultCategoryDataset shuju(){ DefaultCategoryDataset dataset = new ...

  3. java 绘制长方形_Java入门:绘制简单图形

    在上一节,我们学习了如何使用swing和awt工具创建一个空的窗口,本节学习如何绘制简单图形. 基本绘图介绍 Java中绘制基本图形,可以使用Java类库中的Graphics类,此类位于java.aw ...

  4. java国际象棋棋牌_java使用swing绘制国际象棋棋盘

    本文实例为大家分享了java使用swing绘制国际象棋棋盘的具体代码,供大家参考,具体内容如下 1.完整代码 import java.awt.Color; import java.awt.Point; ...

  5. 如何用java做游戏地图_Java为游戏绘制地图网格

    嘿,我正在尝试制作地牢爬虫,但我仍停留在地图生成上.我希望生成随机的房间,但是在完成所有操作之前,我必须先在屏幕上绘制地图.我希望地图自上而下,几乎是一个网格,稍后再将地板图像添加到其中.我的思维方式 ...

  6. java制作画布_java – 使用自定义方法绘制到画布?

    我正在编写一个 Android 2-D游戏,我遇到了一些麻烦. 目前,在我的包中,我有一个绘制画布实例的线程.我正在从资源中绘制Drawable位图.我想做的是让线程处理背景图像的绘制.但是,自定义对 ...

  7. java绘制三维曲线_使用JFreeChart绘制2D和3D折线图 | 学步园

    这是一个Web Project 首先是web.xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schem ...

  8. java wav 波形_java读取wav文件(波形文件)并绘制波形图的方法

    本文实例讲述了java读取wav文件(波形文件)并绘制波形图的方法.分享给大家供大家参考.具体如下: 因为最近有不少网友询问我波形文件读写方面的问题,出于让大家更方便以及让代码能够得到更好的改进,我将 ...

  9. Java点击按钮加一行数据_java - 单击按钮java时如何从txt文件绘制下一行? - SO中文参考 - www.soinside.com...

    单击按钮java时如何从txt文件绘制下一行? 问题描述 投票:0回答:1 import javax.swing.*; import java.awt.*; import java.awt.event ...

最新文章

  1. python做excel表格代码_python实现跨excel的工作表sheet之间的复制方法
  2. 设计模式之职责链模式、减小了因为分支带来的耦合
  3. ActiveMQ学习总结(10)——ActiveMQ采用Spring注解方式发送和监听
  4. android服务器压力测试,Android压力测试Monkey工具
  5. 【Java】Servlet 工作原理解析
  6. 百练OJ:2807:两倍
  7. 网页中的各种高度说明
  8. python:else与循环语句联合用法
  9. 当你的技术债务到期时,LinkedIn的故事 | IDCF
  10. flume的配置和开启
  11. 谷歌浏览器怎么设置中文
  12. 社团管理系统用c语言1000,图书馆管理系统C语言啊1000行啊,哪位老哥有啊??...
  13. Ecplice安装Spring插件could noe find jar(超详细解决)
  14. leetcode刷题:不同路径II
  15. 递推公式与递归退出的条件
  16. 一款DYI动态桌面壁纸程序
  17. ubuntu18.04安装nvidia驱动(戴尔G15_3060版本)
  18. ts(typescript)面向对象之类的继承
  19. 如何获取音乐的地址链接
  20. 深度学习之跟学霹雳吧啦Wz笔记

热门文章

  1. toolbox、library 的组织
  2. 关于php单引号和双引号
  3. jQtouch 初体验
  4. JavaScript之DOM对象(Event事件)
  5. turtle模块还能这样玩?(一条条金龙鱼、雨景)
  6. 普开数据第15届全国高校师资班(青海西宁)
  7. 使用Python开发会聊天的智能小机器人
  8. 《Python程序设计基础》在亚马逊当当京东互动出版网淘宝等各大书店上架
  9. java 等待线程结束 框架_深入理解Java多线程与并发框架——线程的状态
  10. opencv和python是什么关系_使用OpenCV和Python检测眼睛