JFreeChart最新版本1.0.8a的研究系列——生成饼图
2008-01-05 14:47
483 查看
生成饼图
实现步骤1)创建用于图形生成所要的数据集对象。
实例化类DefaultPieDataset dataset = new DefaultPieDataset()。然后利用DefaultPieDataset类提供的setValue(value1,value2)方法,把从数据存入DefaultPieDataset对象。其中value1是数据名称、value2是数据值。
2)创建图形对象。
实例化JFreeChart chart = ChartFactory.createPieChart3D(title, dataset, true, true, false)createPieChart3D方法是生成3D饼图的方法,createPieChart方法是生成平面饼图的方法。其中title代表图形的标题、dataset就是DefaultPieDataset对象的实例,第一个true表示是否显示图例,第二个true测试下来未明,第三个true为是否显示鼠标指向提示。
3)设置图形显示的属性。
通过Pieplot plot = (PiePlot) chart.getPlot()方法获取plot对象,对图像设置相关属性。
4)生成图形
String filename = ServletUtilities.saveChartAsPNG(JPEG)(chart, 800, 600, info, session);
主要用于把图形对象以图片的形式保存为临时文件。其中的chart就是JFreeChart对象的实例。该方法返回一个文件名。
ChartUtilities.saveChartAsJPEG(new File("D:/Downloads/a.jpg"),chart, 800, 600);
用于把图形对象保存为指定的图片文件,该方法无返回值。
实例应用
package jfreechar.test;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat;
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.entity.StandardEntityCollection;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.general.DefaultPieDataset;
/** *//**
* 测试生成饼图实例
*
* @author 左杰
*
*/
public class PieChartTest ...{
/** *//**
* 创建Dataset,用数据源中的数据填充
*
* @return
*/
public DefaultPieDataset getData() ...{
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("短信", 10);
dataset.setValue("上网", 20);
dataset.setValue("本地通话", 30);
dataset.setValue("长途", 50);
return dataset;
}
/** *//**
* 创建图表主对象JFreechart,并设置图像显示
*
* @return
*/
public JFreeChart createPieChart() ...{
// 创建图表主对象JFreechart
JFreeChart chart = ChartFactory.createPieChart("话费统计", getData(), true,
true, true);
//创建3D状图像
//JFreeChart chart = ChartFactory.createPieChart3D("话费统计", getData(), true,
// true, true);
//设置图像的背景颜色
chart.setBackgroundPaint(Color.pink);
//边界线条是否可见
chart.setBorderVisible(false);
// 设置图形显示属性
// 获得图表显示对象,3D状的
// PiePlot3D plot = (PiePlot3D) chart.getPlot();
// 获得图表显示对象
PiePlot plot = (PiePlot) chart.getPlot();
// 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数 值, {2} 表示所占比例 ,小数点后两位
plot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}={1}占{2}", new DecimalFormat("00.0"), new DecimalFormat(
"0.00%")));
// 图例显示百分比:自定义方式, {0} 表示选项, {2} 表示数值
plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}={2}", new DecimalFormat("00.0"),
new DecimalFormat("0.00%")));
// 分离图形,只对平面图有效,3D的不可以
plot.setExplodePercent("长途", 0.4);
// 设置指定块的颜色
plot.setSectionPaint("长途", Color.ORANGE);
// 指定图片的透明度(0.0-1.0)
plot.setForegroundAlpha(0.5f);
//分类标签的字体
plot.setLabelFont(new Font("sim-hei", Font.ITALIC, 14));
//边界线条是否可见
plot.setSectionOutlinesVisible(false);
//设置图形区域背景颜色
plot.setBackgroundPaint(Color.white);
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) ...{
PieChartTest p = new PieChartTest();
JFreeChart chart = p.createPieChart();
//保存为图像文件
p.SaveFileAsPNG("d://piechat.png", chart, 800, 600);
// 显示在GUI上
ChartFrame frame = new ChartFrame("话费", chart);
frame.pack();
frame.setVisible(true);
}
}
这个执行后显示的是平面饼图,如果想实现3D饼图,只需要在创建JFreeChart对象时使用ChartFactory.createPieChart3D方法。
运行结果如下:
平面饼图 | 3D饼图 |
---|---|
相关文章推荐
- JFreeChart最新版本1.0.8a的研究系列——生成柱状图
- JFreeChart最新版本1.0.8a的研究系列——生成曲线图
- JFreeChart最新版本1.0.8a的研究系列——简单介绍
- JFreeChart最新版本1.0.8a的研究系列——JFreeChart的使用
- JFreeChart最新版本1.0.8a的研究系列——JFreeChart相关类和接口的方法说明
- Nuget包里的依赖包更新到最新版本会不会随主包回滚到旧包的研究
- 大家都知道,木头一直都没有在大的游戏公司待过,没见识也没经历过优秀的项目。最近想研究一些开源的Unity3D框架,开拓一下自己的思维。 优先入坑的是Entitas框架,本系列教程基于0.42.3版本。
- ASP.NET控件研究之ComponentArt.Web.UI控件破解最新版本(3.0.1623.0)
- [置顶] 亮仔移植u-boot系列之-- S3c2440在最新版本U-boot-2015.10移植(支持SPL模式启动) -- 1
- 百度地图最新版本sdk使用系列(二)-修改百度地图的默认中心位置
- webpack3最新版本配置研究(四)webpack压缩,clean-webpack-plugin,webpack-manifest-plugin,define-plugin
- (版本定制)第8课:Spark Streaming源码解读之RDD生成生命周期彻底研究和思考
- Android apk系列2-------系统签名(生成release版本的系统)
- [置顶]终于等到你:CYQ.Data V5系列 (ORM数据层)最新版本开源了
- 百度地图最新版本sdk使用系列(六)-搜索周边美食,加油站等,并使用infoWindow展示
- 百度地图最新版本sdk使用系列(七)-实现定位,poi搜索和导航
- webpack3最新版本配置研究(五) devtool,webpack-dev-server,CommonsChunkPlugin
- 最新版本OBS--moc文件自动生成的方法
- webpack3最新版本配置研究(三)多入口,html-webpack-plugin, extract-text-webpack-plugin
- webpack3最新版本配置研究(三)webpack压缩,clean-webpack-plugin,webpack-manifest-plugin,define-plugin