通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

更新时间:2023-09-04 16:56:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

1.1通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

1.1.1创建柱状图的应用实例

1、创建一个简单数据源(dataset)对象的代码示例

柱状图的dataset 一般是用CatagoryDataset接口(具体实现类是DefaultCategoryDataset),也会用 IntervalXYDataset接口。

获取一个演示用的简单数据集对象,也可以采用下面的代码来产生

CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);

其中:rowKeys表示X轴数据,columnKeys表示Y轴数据,data表示填充柱状图所要的实际数据(来自于数据库)。下面为代码示例:

private static CategoryDataset getDataSet(){

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(100, "中科院计算所培训中心", "Java软件工程师班");

dataset.addValue(200, "中科院计算所培训中心", "http://www.77cn.com.cn软件工程师班");

dataset.addValue(300, "中科院计算所培训中心", "平面工程师班");

dataset.addValue(400, "中科院计算所培训中心", "网络工程师班");

dataset.addValue(500, "中科院计算所培训中心", "动漫工程师班");

return dataset;

}

2、创建组合数据集对象的代码示例

private static CategoryDataset getDataSet2() {

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(100, "中科院计算所培训中心", "Java软件工程师班");

dataset.addValue(120, "沈阳培训中心", "Java软件工程师班");

dataset.addValue(130, "长沙培训中心", "Java软件工程师班");

dataset.addValue(220, "中科院计算所培训中心", "http://www.77cn.com.cn软件工程师班");

杨教授工作室,版权所有,盗版必究,1/12页

通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

dataset.addValue(250, "沈阳培训中心", "http://www.77cn.com.cn软件工程师班");

dataset.addValue(280, "长沙培训中心", "http://www.77cn.com.cn软件工程师班");

dataset.addValue(320, "中科院计算所培训中心", "平面工程师班");

dataset.addValue(350, "沈阳培训中心", "平面工程师班");

dataset.addValue(380, "长沙培训中心", "平面工程师班");

dataset.addValue(420, "中科院计算所培训中心", "网络工程师班");

dataset.addValue(450, "沈阳培训中心", "网络工程师班");

dataset.addValue(480, "长沙培训中心", "网络工程师班");

dataset.addValue(520, "中科院计算所培训中心", "动漫工程师班");

dataset.addValue(550, "沈阳培训中心", "动漫工程师班");

dataset.addValue(580, "长沙培训中心", "动漫工程师班");

return dataset;

}

3、创建JFreeChart类的对象实例的代码示例

CategoryDataset dataset = getDataSet2();

FreeChart chart = ChartFactory.createBarChart3D(

"招生人数图", // 图表标题

"班别", // 目录轴(横坐标)的显示标签

"人数", // 数值轴(纵坐标)的显示标签

dataset, // 数据集

PlotOrientation.VERTICAL, // 图表方向:水平、垂直

true, // 是否显示图例(对于简单的柱状图必须是false)

false, // 是否生成工具

false // 是否生成URL链接

);

org.jfree.chart.ChartFactory这个工厂类有createBarChart、createStackedBarChart、createBarChart3D、createStackedBarChart3D等方法,这几个工厂方法创建不同类型的柱状图;而其

杨教授工作室,版权所有,盗版必究,2/12页

通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

中的PlotOrientation.VERTICAL 参加数让平行柱垂直显示,而 PlotOrientation.HORIZONTAL 则让平行柱水平显示。

createBarChart3D方法是ChartFactory工厂类里的一个方法,用于3D柱状图的生成,该类继承自JFreeChart。其中的八个参数分别代表:图形的标题、X轴标题、Y轴标题、dataset就是CategoryDataset 类的实例对象、显示标题、启用热键、启用超链接。

4、下面是对图表进行各种设置的代码示例

chart.setBackgroundPaint(Color.white); //设定背景色为白色

CategoryPlot categoryplot = chart.getCategoryPlot(); //获得 CategoryPlot

categoryplot.setBackgroundPaint(Color.lightGray); //设定图表数据显示部分背景色

categoryplot.setDomainGridlinePaint(Color.white); //横坐标网格线白色

categoryplot.setDomainGridlinesVisible(true); //可见

categoryplot.setRangeGridlinePaint(Color.white); //纵坐标网格线白色

categoryplot.setForegroundAlpha(0.5f); //设定透明度

categoryplot.setNoDataMessage("无记录内容"); //无记录异常显示

// 下面两行使纵坐标的最小单位格为整数

NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();

杨教授工作室,版权所有,盗版必究,3/12页

通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer();

barrenderer.setDrawBarOutline(false); // Bar的外轮廓线不画

GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.blue,

0.0F, 0.0F, new Color(0, 0, 64)); //设定特定颜色

GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F, Color.green,

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

GradientPaint gradientpaint2 = new GradientPaint(0.0F, 0.0F, Color.red,

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

barrenderer.setSeriesPaint(0, gradientpaint); //给series1 Bar设定上面定义的颜色barrenderer.setSeriesPaint(1, gradientpaint1); //给series2 Bar 设定上面定义的颜色barrenderer.setSeriesPaint(2, gradientpaint2); //给series3 Bar 设定上面定义的颜色

CategoryAxis categoryaxis = categoryplot.getDomainAxis();//横轴上的 Lable 45度倾斜categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);

杨教授工作室,版权所有,盗版必究,4/12页

通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

5、生成和输出图表的相关功能实现代码

FileOutputStream fos_jpg = null;

String tempDirName=null,picFileName=null;

try {

File tempDir = new File(System.getProperty("java.io.tmpdir"));

tempDirName = tempDir.getAbsolutePath();

picFileName=tempDirName+"/studentBar.jpg";

fos_jpg = new FileOutputStream(picFileName);

ChartUtilities.writeChartAsJPEG(fos_jpg,1.0f,chart,600,500,null);

System.out.println("图表已经正确地保存到"+picFileName);

}

catch(IOException e){

System.out.println("不能正确地保存"+picFileName);

}

杨教授工作室,版权所有,盗版必究,5/12页

通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

finally{

try {

fos_jpg.close();

}

catch (Exception e){

}

}

6、本实例完整的程序代码示例

package com.px1987.j2sejfreechart.demo;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.ChartUtilities;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.data.category.DefaultCategoryDataset;

import org.jfree.data.general.Dataset;

public class BarChartDemo implements ChartInterface {

public BarChartDemo() {

}

public JFreeChart createOneChart() {

JFreeChart oneJFreeChart=ChartFactory.createBarChart(

"XXX学校的各个专业的人数统计结果", // 图表标题

"专业", // 目录轴(横坐标)的显示标签

"人数", // 数值轴(纵坐标)的显示标签

(DefaultCategoryDataset)getDataSet(),

PlotOrientation.HORIZONTAL, // 图表方向:水平(PlotOrientation.HORIZONTAL)、垂直(PlotOrientation.VERTICAL)

true, // 是否显示图例

杨教授工作室,版权所有,盗版必究,6/12页

通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

false, // 是否显示tooltips

false);

return oneJFreeChart;

}

/*

private Dataset getDataSet() {

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(100, "中科院计算所培训中心", "Java软件工程师班");

dataset.addValue(200, "中科院计算所培训中心", "http://www.77cn.com.cn软件工程师班");

dataset.addValue(300, "中科院计算所培训中心", "平面工程师班");

dataset.addValue(400, "中科院计算所培训中心", "网络工程师班");

dataset.addValue(500, "中科院计算所培训中心", "动漫工程师班");

return dataset;

}

*/

public Dataset getDataSet() {

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(100, "中科院计算所培训中心", "Java软件工程师班");

dataset.addValue(120, "沈阳培训中心", "Java软件工程师班");

dataset.addValue(130, "长沙培训中心", "Java软件工程师班");

dataset.addValue(220, "中科院计算所培训中心", "http://www.77cn.com.cn软件工程师班");

dataset.addValue(250, "沈阳培训中心", "http://www.77cn.com.cn软件工程师班");

dataset.addValue(280, "长沙培训中心", "http://www.77cn.com.cn软件工程师班");

dataset.addValue(320, "中科院计算所培训中心", "平面工程师班");

dataset.addValue(350, "沈阳培训中心", "平面工程师班");

dataset.addValue(380, "长沙培训中心", "平面工程师班");

dataset.addValue(420, "中科院计算所培训中心", "网络工程师班");

杨教授工作室,版权所有,盗版必究,7/12页

通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

dataset.addValue(450, "沈阳培训中心", "网络工程师班");

dataset.addValue(480, "长沙培训中心", "网络工程师班");

dataset.addValue(520, "中科院计算所培训中心", "动漫工程师班");

dataset.addValue(550, "沈阳培训中心", "动漫工程师班");

dataset.addValue(580, "长沙培训中心", "动漫工程师班");

return dataset;

}

public boolean outPutOneChart(String chartFileName, JFreeChart oneJFreeChart) { FileOutputStream fos_jpg = null;

File tempDir =null;

try {

tempDir = new File(System.getProperty("java.io.tmpdir"));

String tempDirName = tempDir.getAbsolutePath();

String picFileName=tempDirName+"/"+chartFileName;

fos_jpg = new FileOutputStream(picFileName);

ChartUtilities.writeChartAsJPEG(fos_jpg, oneJFreeChart, 700,600);

}

catch(IOException e){

System.out.println(" 在保存图时出现了错误,并且错误内容为"+e.getMessage());

return false;

}

return true;

}

public static void main(String[] args) {

BarChartDemo one=new BarChartDemo();

JFreeChart oneJFreeChart=one.createOneChart();

String chartFileName="myPie.jpeg";

one.outPutOneChart(chartFileName, oneJFreeChart);

}

杨教授工作室,版权所有,盗版必究,8/12页

通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

}

注意:public static void writeChartAsJPEG(java.io.OutputStream out, float quality,

JFreeChart chart,

int width,

int height,

ChartRenderingInfo info)

throws java.io.IOException

7、测试本示例目前的应用效果

将出现下面的提示

8、图表为下面的结果(getDataSet方法)

杨教授工作室,版权所有,盗版必究,9/12页

通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

或者

9、图表为下面的结果

杨教授工作室,版权所有,盗版必究,10/12页

通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

或者

杨教授工作室,版权所有,盗版必究,11/12页

通过代码实例跟我学JFreeChart 图表组件——在Java应用程序中创建柱状图的应用实例(Eclipse开发工具版本)

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

杨教授工作室,版权所有,盗版必究,12/12页

本文来源:https://www.bwwdw.com/article/av7i.html

Top