java做曲线图柱状图数据统计13页文档资料Word文档格式.docx

上传人:b****5 文档编号:20279016 上传时间:2023-01-21 格式:DOCX 页数:18 大小:23.93KB
下载 相关 举报
java做曲线图柱状图数据统计13页文档资料Word文档格式.docx_第1页
第1页 / 共18页
java做曲线图柱状图数据统计13页文档资料Word文档格式.docx_第2页
第2页 / 共18页
java做曲线图柱状图数据统计13页文档资料Word文档格式.docx_第3页
第3页 / 共18页
java做曲线图柱状图数据统计13页文档资料Word文档格式.docx_第4页
第4页 / 共18页
java做曲线图柱状图数据统计13页文档资料Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

java做曲线图柱状图数据统计13页文档资料Word文档格式.docx

《java做曲线图柱状图数据统计13页文档资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《java做曲线图柱状图数据统计13页文档资料Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

java做曲线图柱状图数据统计13页文档资料Word文档格式.docx

图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持

XXXXXAxis

用于处理图表的两个轴:

纵轴和横轴

XXXXXRenderer

负责如何显示一个图表对象

XXXXXURLGenerator

用于生成Web图表中每个项目的鼠标点击链接

XXXXXToolTipGenerator

用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类

下面以柱状图和饼图以及折线图为例,介绍图形创建方法。

1)柱状图

org.jfree.chart.ChartFactory这个工厂类有

createBarChart、

createStackedBarChart、

createBarChart3D、

createStackedBarChart3D,这几个工厂方法创建不同类型的柱状图,比较重要的是PlotOrientation.VERTICAL让平行柱垂直显示,而PlotOrientation.HORIZONTAL则让平行柱水平显示。

对柱状图影响较大的几个类包括:

org.jfree.chart.axis.CategoryAxis、

org.jfree.chart.axis.ValueAxis、

org.jfree.chart.renderer.BarRenderer、

org.jfree.chart.renderer.BarRenderer3D。

具体实现步骤:

(1)创建用于图形生成所要的数据集对象。

CategoryDatasetdataset=DatasetUtilities.createCategoryDataset(rowKeys,columnKeys,data);

其中:

rowKeys表示X轴数据,columnKeys表示Y轴数据,data表示填充柱状图所要的实际数据(来自于数据库)。

(2)创建图形对象。

JFreeChartchart=ChartFactory.createBarChart3D(

"

标题"

//图形的标题

null,//X轴标题

null,//Y轴标题

dataset,//数据

PlotOrientation.VERTICAL,,//图表方向

true,//是否显示图例

false,//启用热键

false)//启用超键接

createBarChart3D方法是ChartFactory工厂类里的一个方法,用于3D柱状图的生成,该类继承自JFreeChart。

(3)设置图形显示的属性

a)ValueAxis类,设置柱到图上下边的距离。

实现方法是:

ValueAxisrangeAxis=plot.getRangeAxis();

设置最高的一个柱与图片顶端的距离:

rangeAxis.setUpperMargin(0.15)

设置最低的一个柱与图片底端的距离:

rangeAxis.setLowerMargin(0.15)

b)org.jfree.chart.renderer.BarRenderer3D类,设置图形上显示的数值。

实现方法如下:

BarRenderer3Drenderer=newBarRenderer3D();

renderer.setBaseOutlinePaint(Color.BLACK);

设置Wall的颜色:

renderer.setWallPaint(Color.gray);

设置每个柱的颜色:

renderer.setSeriesPaint(0,newColor(0,0,255));

renderer.setSeriesPaint(1,newColor(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(newStandardCategoryItemLabelGenerator());

renderer.setItemLabelFont(newFont("

黑体"

Font.PLAIN,12));

renderer.setItemLabelsVisible(true);

为图形加入超连接

renderer.setItemURLGenerator(newStandardCategoryURLGenerator());

renderer.setToolTipGenerator(newStandardCategoryToolTipGenerator());

柱状图DEMO:

packagecom.cons.jfreechart;

importjava.awt.Color;

importjava.io.File;

importjava.io.FileOutputStream;

importorg.jfree.chart.ChartFactory;

importorg.jfree.chart.ChartPanel;

importorg.jfree.chart.ChartRenderingInfo;

importorg.jfree.chart.ChartUtilities;

importorg.jfree.chart.JFreeChart;

importorg.jfree.chart.axis.NumberAxis3D;

importorg.jfree.chart.entity.StandardEntityCollection;

importorg.jfree.chart.plot.CategoryPlot;

importorg.jfree.chart.plot.PlotOrientation;

importorg.jfree.chart.plot.XYPlot;

importorg.jfree.chart.renderer.category.BarRenderer;

importorg.jfree.chart.renderer.category.BarRenderer3D;

importorg.jfree.chart.renderer.xy.XYBarRenderer;

importorg.jfree.chart.renderer.xy.XYItemRenderer;

importorg.jfree.data.category.CategoryDataset;

importorg.jfree.data.category.DefaultCategoryDataset;

importorg.jfree.ui.ApplicationFrame;

importorg.jfree.ui.RefineryUtilities;

publicclassBarChartDemoextendsApplicationFrame{

publicBarChartDemo(){

super("

);

*获取一个演示用的简单数据集对象

*@return

privatestaticCategoryDatasetgetDataSet(){

DefaultCategoryDatasetdataset=newDefaultCategoryDataset();

dataset.addValue(100,null,"

苹果"

dataset.addValue(200,null,"

梨子"

dataset.addValue(300,null,"

葡萄"

dataset.addValue(400,null,"

香蕉"

dataset.addValue(500,null,"

荔枝"

returndataset;

*获取一个演示用的组合数据集对象

privatestaticCategoryDatasetgetDataSet2(){

dataset.addValue(100,"

北京"

"

上海"

广州"

dataset.addValue(200,"

dataset.addValue(300,"

dataset.addValue(400,"

dataset.addValue(500,"

*@paramargs

publicstaticvoidmain(String[]args){

CategoryDatasetdataset=getDataSet2();

JFreeChartchart=ChartFactory.createBarChart3D(

"

水果产量图"

//图表标题

水果"

//目录轴的显示标签

产量"

//数值轴的显示标签

dataset,//数据集

PlotOrientation.VERTICAL,//图表方向:

水平、垂直

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

false,//是否生成工具

false//是否生成URL链接

CategoryPlotplot=chart.getCategoryPlot();

BarRenderer3Drenderer3D=(BarRenderer3D)plot.getRenderer();

//BarRenderer3Drenderer3D=newBarRenderer3D();

renderer3D.setSeriesPaint(0,Color.ORANGE);

//设置柱子的颜色

renderer3D.setSeriesPaint(1,Color.RED);

renderer3D.setSeriesPaint(2,Color.BLACK);

//NumberAxis3DnumberAxis3D=(NumberAxis3D)plot.getRangeAxis();

//numberAxis3D.setStandardTickUnits(NumberAxis3D.createIntegerTickUnits());

ChartPanelchartPanel=newChartPanel(chart);

chartPanel.setPreferredSize(newjava.awt.Dimension(500,270));

Filefos_jpg=null;

FileOutputStreamoutputStream=null;

ChartRenderingInfoinfo=newChartRenderingInfo(newStandardEntityCollection());

try{

fos_jpg=newFile("

D:

\\fruite.jpg"

outputStream=newFileOutputStream("

\\fruite1.jpg"

ChartUtilities.saveChartAsJPEG(fos_jpg,chart,500,270);

ChartUtilities.writeChartAsJPEG(outputStream,chart,500,270);

outputStream.close();

}catch(Exceptione){

//TODO:

handleexception

BarChartDemobarChartDemo=newBarChartDemo();

barChartDemo.pack();

barChartDemo.add(chartPanel);

RefineryUtilities.centerFrameOnScreen(barChartDemo);

barChartDemo.setVisible(true);

注意:

3D的柱状图和2D的柱状图做法是一样的,如果纯粹画图就不要继承ApplicationFrame

2)饼图

1)创建用于图形生成所要的数据集对象。

首先实例化类DefaultPieDatasetdataset=newDefaultPieDataset()。

然后利用DefaultPieDataset类提供的setValue(value1,value2)方法,把从数据库里提取的数据存入DefaultPieDataset对象。

其中value1是数据名称、value2是数据值。

2)创建图形对象。

首先实例化JFreeChartchart=ChartFactory.createPieChart3D(title,

dataset,

true,

false)

createPieChart3D方法是用于饼图生成的主要方法。

其中title代表图形的标题、

dataset就是DefaultPieDataset对象的实例。

3)设置图形显示的属性。

Stringfilename=ServletUtilities.saveChartAsPNG(jFreeChart,700,450,info,session);

ChartUtilities.writeImageMap(pw,filename,info);

pw.flush()

saveChartAsPNG方法在ServletUtilities工厂类定义完成。

主要用于把图形对象JFreeChart以图片的形式保存。

其中的jFreeChart就是

JFreeChart对象的实例。

该方法返回一个文件名。

writeImageMap(pw,filename,info)方法用于把保存的图片文件以字节流的形式写入用户界面。

其中pw是java.io包的PrintWriter类的实例对象,该对象创建一个图形输出流。

Filename是输出图片的文件名。

该文件名来自ServletUtilities.saveChartAsPNG方法创建。

参数info用于图形信息的显示。

用ChartRenderingInfoinfo=newChartRenderingInfo(newStandardEntityCollection())创建。

最后输出完成图形,调用pw.flush()方法关闭IO流。

importjava.awt.Font;

importjava.io.*;

importorg.jfree.data.general.DefaultPieDataset;

importorg.jfree.chart.*;

importorg.jfree.chart.plot.PiePlot3D;

publicclassPieChartDemo{

privatestaticDefaultPieDatasetgetDataSet(){

DefaultPieDatasetdataset=newDefaultPieDataset();

dataset.setValue("

100);

200);

300);

400);

500);

DefaultPieDatasetdata=getDataSet();

JFreeChartchart=ChartFactory.createPieChart3D("

data,

true,//是否显示图例

false,

false

PiePlot3DpiePlot3D=(PiePlot3D)chart.getPlot();

//piePlot3D.setLabelGap(0.02D);

//piePlot3D.setCircular(true);

//设置是否以圆型来显示

piePlot3D.setLabelFont(newFont("

SansSerif"

3,12));

//设置字体

piePlot3D.setSectionOutlinePaint(Color.BLACK);

//设置轮廓线颜色

//piePlot3D.setSectionOutlineStroke(piePlot3D.DEFAULT_LABEL_OUTLINE_STROKE);

piePlot3D.setSectionOutlinesVisible(false);

//piePlot3D.setNoDataMessage("

Nodataavailable"

//写图表对象到文件,参照柱状图生成源码

Filefile=newFile("

/pieFruite.jpg"

ChartUtilities.saveChartAsJPEG(file,chart,500,270);

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

3)折线图

折线图的dataset两种CatagoryDataset接口(具体实现类是DefaultCategoryDataset),XYDataset接口体实现步骤:

1、首先实例化类XYSeriesfirdtSeries=newXYSeries(“线的名称”);

然后利用XYSeries类提供的add(value1,value2)方法,把从数据库里提取的数据存入XYSeries对象。

然后实例化XYSeriesCollectioncollection=newXYSeriesCollection();

最后返回collection

2、创建图形对象。

//createthechart...

JFreeChartchart=ChartFactory.createXYLineChart(

title,//charttitle(图表标题)

X"

//xaxislabel(横坐标名称)

Y"

//yaxislabel(纵坐标名称)

dataset,//data(数据)

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

true,//includelegend(是否显现图例)

true,//tooltips

true//urls

3、保存显示图片

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1