JFreeChart最新版本1.0.8a的研究系列——生成柱状图
来源:互联网 发布:3ds淘宝哪家店好 编辑:程序博客网 时间:2024/05/26 07:28
生成柱状图
1)创建用于图形生成所要的数据集对象。
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
DefaultPieDataset类提供的setValue(data,rowKey,columnKey)方法,设置柱状图形显示的数据,其中:rowKey表示X轴数据,columnKey表示Y轴数据,data表示填充柱状图所要的实际数据。
2)创建图形对象。
JFreeChart chart = ChartFactory.createBarChart3D("标题", null,null,dataset,PlotOrientation.VERTICAL,,true,false,false);
createBarChart3D方法是ChartFactory工厂类里的一个方法,用于3D柱状图的生成,平面柱状图使用createBarChart方法创建,还有createStackedBarChart和createStackedBarChart3D方法可以创建叠加式的平面和3D柱状图。八个参数分别代表:图形的标题、X轴标题、Y轴标题、dataset就是CategoryDataset类的实例对象、柱形图显示形式、是否显示图例、测试未明、是否显示鼠标志向提示,其中柱形图显示形式有,PlotOrientation.VERTICAL表示垂直方式、PlotOrientation.HORIZONTAL表示水平方式。
3)设置图形显示的属性。
a) ValueAxis类,设置柱到图上下边的距离。实现方法是:
获取ValueAxis对象
ValueAxis rangeAxis = (ValueAxis)plot.getRangeAxis();
设置最高的一个柱与图片顶端的距离:
rangeAxis.setUpperMargin(0.15)
设置最低的一个柱与图片底端的距离:
rangeAxis.setLowerMargin(0.15)
b)BarRenderer类,设置图形上显示的数值。实现方法如下:
获取BarRenderer对象
BarRenderer renderer = (BarRenderer) plot.getRenderer();
renderer.setBaseOutlinePaint(Color.BLACK);
设置 Wall 的颜色:
renderer.setWallPaint(Color.gray);
设置每个柱的颜色:
renderer.setSeriesPaint(0, new Color(0, 0, 255));
renderer.setSeriesPaint(1, new Color(0, 100, 255));
renderer.setSeriesPaint(2, Color.GREEN);
设置每个柱的 Outline 颜色
renderer.setSeriesOutlinePaint(0, Color.BLACK);
renderer.setSeriesOutlinePaint(1, Color.BLACK);
renderer.setSeriesOutlinePaint(2, Color.BLACK);
设置每个地区所包含的平行柱之间的距离
renderer.setItemMargin(0.1);
显示每个柱的数值,并修改该数值的字体属性
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelFont(new Font("黑体",Font.PLAIN,12));
renderer.setItemLabelsVisible(true);
import java.awt.Color;
import java.io.File;
import java.io.IOException;
import javax.servlet.http.HttpSession;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.Range;
import org.jfree.data.category.DefaultCategoryDataset;
/** *//**
* 测试生成柱形图实例
*
* @author 左杰
*
*/
public class BarChartTest ...{
/** *//**
* 获取简单数据集对象
*
* @return
*/
public DefaultCategoryDataset getJdDataSet() ...{
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(500, "北京", "荔枝");
return dataset;
}
/** *//**
* 获取组合数据集对象
*
* @return
*/
public DefaultCategoryDataset getZhDataSet() ...{
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(100, "广州", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(200, "上海", "梨子");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(300, "上海", "葡萄");
dataset.addValue(300, "广州", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(400, "上海", "香蕉");
dataset.addValue(400, "广州", "香蕉");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(500, "上海", "荔枝");
dataset.addValue(500, "广州", "荔枝");
return dataset;
}
/** *//**
* 创建图表主对象JFreechart,并设置图像显示
*
* @return
*/
public JFreeChart createBarChart() ...{
DefaultCategoryDataset dataset = getJdDataSet();
// 创建JFreechart对象,3D状的
// JFreeChart chart = ChartFactory.createBarChart3D("水果产量统计", "水果",
// "产量",dataset, PlotOrientation.VERTICAL, true, true, true);
// 创建JFreechart对象,平面状的
JFreeChart chart = ChartFactory.createBarChart("水果产量统计", "水果", "产量",
dataset, PlotOrientation.VERTICAL, true, true, true);
// 设置图形显示属性
CategoryPlot plot = (CategoryPlot) chart.getPlot();
// 目录轴网格是否可见
plot.setDomainGridlinesVisible(false);
// 目录轴网格线的颜色
plot.setDomainGridlinePaint(Color.red);
// 数据轴网格是否可见
plot.setRangeGridlinesVisible(true);
// 数据轴网格线的颜色
plot.setRangeGridlinePaint(Color.blue);
// 设置图像区域背景颜色
plot.setBackgroundPaint(Color.white);
// 设置柱的透明度
plot.setForegroundAlpha(0.9f);
// 设置目录轴和数据轴的显示位置
plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
// 设置数据轴的刻度
NumberAxis naxis = (NumberAxis) plot.getRangeAxis();
// 设置数据轴的数据范围
naxis.setRange(new Range(0, 1000));
// 设置刻度波动值
naxis.setTickUnit(new NumberTickUnit(50));
// 设置图形的宽度
CategoryAxis caxis = plot.getDomainAxis();
// 设置最高的一个柱图与图片顶端的距离
caxis.setUpperMargin(0.15);
// 设置最低的一个柱图与图片底端的距离
caxis.setLowerMargin(0.15);
// 设置柱图属性
BarRenderer renderer = (BarRenderer) plot.getRenderer();
//
renderer.setBaseOutlinePaint(Color.black);
// 设置每个地区代表的柱的颜色
renderer.setSeriesPaint(0, Color.pink);
renderer.setSeriesPaint(1, new Color(0, 100, 255));
renderer.setSeriesPaint(2, Color.green);
// 设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.02);
return chart;
}
/** *//**
* 生成图形,保存图像到临时文件,并返回文件名
*
* @param chart
* JFreeChart对象实例
* @param w
* 图像宽度
* @param h
* 图像高度
* @param session
* 会话session
* @return
*/
public String getFileName(JFreeChart chart, int w, int h,
HttpSession session) ...{
// 生成图形,保存图像到临时文件,并返回文件名
String fileName = "";
StandardEntityCollection sec = new StandardEntityCollection();
ChartRenderingInfo info = new ChartRenderingInfo(sec);
try ...{
fileName = ServletUtilities.saveChartAsPNG(chart, w, h, info,
session);
} catch (Exception e) ...{
System.out.println("Exception - " + e.toString());
fileName = "public_error_500x300.png";
}
return fileName;
}
/** *//**
* 生成图形,保存到指定文件,文件类型为png
*
* @param fileName
* 指定保存文件的路径及文件名
* @param chart
* JFreeChart对象实例
* @param w
* 图像宽度
* @param h
* 图像高度
*/
public void SaveFileAsPNG(String fileName, JFreeChart chart, int w, int h) ...{
// 生成图形,保存到指定文件,文件类型为png
try ...{
ChartUtilities.saveChartAsPNG(new File(fileName), chart, w, h);
} catch (IOException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/** *//**
* 生成图形,保存到指定文件,文件类型为jpg
*
* @param fileName
* 指定保存文件的路径及文件名
* @param chart
* JFreeChart对象实例
* @param w
* 图像宽度
* @param h
* 图像高度
*/
public void SaveFileAsJPEG(String fileName, JFreeChart chart, int w, int h) ...{
// 生成图形,保存到指定文件,文件类型为jpg
try ...{
ChartUtilities.saveChartAsPNG(new File(fileName), chart, w, h);
} catch (IOException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) ...{
BarChartTest p = new BarChartTest();
JFreeChart chart = p.createBarChart();
// 保存为图像文件
p.SaveFileAsPNG("d://barchart.png", chart, 800, 600);
// 显示在GUI上
ChartFrame frame = new ChartFrame("水果产量", chart);
frame.pack();
frame.setVisible(true);
}
}
简单数据运行结果如下:
组合数据运行结果如下:
使用createStackedBarChart3D方法创建叠加式的柱状图效果如下:
- JFreeChart最新版本1.0.8a的研究系列——生成柱状图
- JFreeChart最新版本1.0.8a的研究系列——生成饼图
- JFreeChart最新版本1.0.8a的研究系列——生成曲线图
- JFreeChart最新版本1.0.8a的研究系列——JFreeChart的使用
- JFreeChart最新版本1.0.8a的研究系列——简单介绍
- JFreeChart最新版本1.0.8a的研究系列——JFreeChart相关类和接口的方法说明
- JFreeChart生成柱状图的类
- JFreeChart 生成柱状图
- JFreeChart生成柱状图
- JFreeChart生成柱状图
- jfreechart柱状图生成
- JFreeChart生成柱状图实例
- JFreeChart生成柱状图
- jfreechart生成柱状图
- JFreeChart生成柱状图 jfreechart-0.9.16.jar
- JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)
- JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)
- JFreeChart生成3D柱状图
- ubuntu 7.10 下 Qt 编程安装过程
- Lua学习笔记四--返回值和UserData
- 用指针数组作main函数的形参,argc,argv
- 两招“揪住”猎头心
- 1Fh Binary-Hex Editor v1.16
- JFreeChart最新版本1.0.8a的研究系列——生成柱状图
- oracle 修改字段名
- IIS 6.0 Resource Kit Tools
- ASP.NET异步请求处理(Asynchronous Http Handlers)
- JFreeChart最新版本1.0.8a的研究系列——JFreeChart相关类和接口的方法说明
- AjaxPro与服务器端交互过程中如何传值
- 关于Linux内核源码使用
- sql得到孩子节点列表
- 2008年 新年来临 博客开放