Java-jfree报表(学习整理)----饼状图、柱状图、折线统计图
1、使用的报表工具:
jfree报表
2、下载网址:
下载之后先解压:如下图
下载后:需要的jar包!如下图:
打开:找到以下的两个jar包
再导入开发项目中:
之后就可以正常使用jfree报表了:
3、jfree报表API文档:
http://tool.oschina.net/apidocs/apidoc?api=jfreechart
参考博文:Bannings博客
http://blog.csdn.net/zhangao0086/article/details/6365468
4、直接上测试源码:
4.1饼状图:
import java.awt.Font;
import java.awt.Image;
import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; import javax.imageio.ImageIO; import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset; /**
* 测试生成报表图形
* Created by Jason 2016-7-18 上午7:14:59
*/
public class CharReport_BZT {
/**
* 提供静态方法:获取报表图形1:饼状图
* @param title 标题
* @param datas 数据
* @param font 字体
*/
public static void createPort(String title,Map<String,Double> datas,Font font){
try {
//如果不使用Font,中文将显示不出来 DefaultPieDataset pds = new DefaultPieDataset(); //获取迭代器:
Set<Entry<String, Double>> set = datas.entrySet();
Iterator iterator=(Iterator) set.iterator();
Entry entry=null;
while(iterator.hasNext()){
entry=(Entry) iterator.next();
pds.setValue(entry.getKey().toString(),Double.parseDouble(entry.getValue().toString()));
}
/**
* 生成一个饼图的图表
*
* 分别是:显示图表的标题、需要提供对应图表的DateSet对象、是否显示图例、是否生成贴士以及是否生成URL链接
*/
JFreeChart chart = ChartFactory.createPieChart(title, pds, true, false, true);
//设置图片标题的字体
chart.getTitle().setFont(font); //得到图块,准备设置标签的字体
PiePlot plot = (PiePlot) chart.getPlot(); //设置分裂效果,需要指定分裂出去的key
plot.setExplodePercent("天使-彦", 0.1); //设置标签字体
plot.setLabelFont(font); //设置图例项目字体
chart.getLegend().setItemFont(font); /**
* 设置开始角度(弧度计算)
*
* 度 0° 30° 45° 60° 90° 120° 135° 150° 180° 270° 360°
* 弧度 0 π/6 π/4 π/3 π/2 2π/3 3π/4 5π/6 π 3π/2 2π
*/
plot.setStartAngle(new Float(3.14f / 2f)); //设置背景图片,设置最大的背景
Image img = ImageIO.read(new File("f:/test/1.jpg"));
chart.setBackgroundImage(img); //设置plot的背景图片
img = ImageIO.read(new File("f:/test/2.jpg"));
plot.setBackgroundImage(img); //设置plot的前景色透明度
plot.setForegroundAlpha(0.7f); //设置plot的背景色透明度
plot.setBackgroundAlpha(0.0f); //设置标签生成器(默认{0})
//{0}:key {1}:value {2}:百分比 {3}:sum
plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}({1}票)/{2}")); //将内存中的图片写到本地硬盘
ChartUtilities.saveChartAsJPEG(new File("f:/test/aa.png"), chart, , );
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
Font font = new Font("新宋体", Font.BOLD, );
Map<String, Double> map=new HashMap<String, Double>();
map.put("天使-彦", (double) );
map.put("雄兵连-蔷薇", (double) );
map.put("太阳之光-蕾娜", (double) );
map.put("辅助-琴女", (double) );
CharReport_BZT.createPort("超神学院女神投票结果", map, font);
} }
运行结果:
4.2柱状图:
import java.awt.Font;
import java.io.File;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set; import javax.imageio.ImageIO; import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset; import java.util.List;
import java.util.Map.Entry; /**
* Created by Jason 2016-7-18 上午8:12:38
*/
public class CharReport_ZZT { /**
* 提供静态方法:获取报表图形2:柱状图
* @param title 标题
* @param datas 数据
* @param type 分类(第一季,第二季.....)
* @param danwei 柱状图的数量单位
* @param font 字体
*/
public static void createPort(String title,Map<String,Map<String,Double>> datas,String type,String danwei,Font font){
try {
//种类数据集
DefaultCategoryDataset ds = new DefaultCategoryDataset(); //获取迭代器:
Set<Entry<String, Map<String, Double>>> set1 = datas.entrySet(); //总数据
Iterator iterator1=(Iterator) set1.iterator(); //第一次迭代
Iterator iterator2=null;
HashMap<String, Double> map = null;
Set<Entry<String,Double>> set2=null;
Entry entry1=null;
Entry entry2=null; while(iterator1.hasNext()){
entry1=(Entry) iterator1.next(); //遍历分类 map=(HashMap<String, Double>) entry1.getValue();//得到每次分类的详细信息
set2=map.entrySet(); //获取键值对集合
iterator2=set2.iterator(); //再次迭代遍历
while (iterator2.hasNext()) {
entry2= (Entry) iterator2.next();
ds.setValue(Double.parseDouble(entry2.getValue().toString()),//每次统计数量
entry2.getKey().toString(), //名称
entry1.getKey().toString()); //分类
System.out.println("当前:--- "+entry2.getKey().toString()+"--"
+entry2.getValue().toString()+"--"
+entry1.getKey().toString());
}
System.out.println("-------------------------------------");
} //创建柱状图,柱状图分水平显示和垂直显示两种
JFreeChart chart = ChartFactory.createBarChart(title, type, danwei, ds, PlotOrientation.VERTICAL, true, true, true); //设置整个图片的标题字体
chart.getTitle().setFont(font); //设置提示条字体
font = new Font("宋体", Font.BOLD, );
chart.getLegend().setItemFont(font); //得到绘图区
CategoryPlot plot = (CategoryPlot) chart.getPlot();
//得到绘图区的域轴(横轴),设置标签的字体
plot.getDomainAxis().setLabelFont(font); //设置横轴标签项字体
plot.getDomainAxis().setTickLabelFont(font); //设置范围轴(纵轴)字体
plot.getRangeAxis().setLabelFont(font);
//存储成图片 //设置chart的背景图片
chart.setBackgroundImage(ImageIO.read(new File("f:/test/1.jpg"))); plot.setBackgroundImage(ImageIO.read(new File("f:/test/2.jpg"))); plot.setForegroundAlpha(1.0f); ChartUtilities.saveChartAsJPEG(new File("f:/test/bb.png"), chart, , );
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) { Map<String, Map<String, Double>> datas =new HashMap<String, Map<String,Double>>(); Map<String, Double> map1=new HashMap<String, Double>();
Map<String, Double> map2=new HashMap<String, Double>();
Map<String, Double> map3=new HashMap<String, Double>();
Map<String, Double> map4=new HashMap<String, Double>(); //设置第一期的投票信息
map1.put("天使-彦", (double) );
map1.put("雄兵连-蔷薇", (double) );
map1.put("太阳之光-蕾娜", (double) );
map1.put("辅助-琴女", (double) ); //设置第二期的投票信息
map2.put("天使-彦", (double) );
map2.put("雄兵连-蔷薇", (double) );
map2.put("太阳之光-蕾娜", (double) );
map2.put("辅助-琴女", (double) ); //设置第三期的投票信息
map2.put("天使-彦", (double) );
map3.put("雄兵连-蔷薇", (double) );
map3.put("太阳之光-蕾娜", (double) );
map3.put("辅助-琴女", (double) ); //设置第四期的投票信息
map4.put("天使-彦", (double) );
map4.put("雄兵连-蔷薇", (double) );
map4.put("太阳之光-蕾娜", (double) );
map4.put("辅助-琴女", (double) ); //压入数据
datas.put("第一季", map1);
datas.put("第二季", map2);
datas.put("第三季-神与神", map3);
// datas.put("第四季-黑甲", map4); Font font = new Font("宋体", Font.BOLD, );
CharReport_ZZT.createPort("超神学院前四季最受欢迎的女性角色投票结果",datas,"超神纪元","数量单位(票)",font);
} }
运行效果:
4.3折线图
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry; import javax.imageio.ImageIO; import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset; /**
* Created by Jason 2016-7-18 上午9:13:20
*/
public class CharReport_ZXT {
/**
* 提供静态方法:获取报表图形3:折线图
* @param title 标题
* @param datas 数据
* @param type 分类(第一季,第二季.....)
* @param danwei 柱状图的数量单位
* @param font 字体
*/
public static void createPort(String title,Map<String,Map<String,Double>> datas,String type,String danwei,Font font){
try {
//种类数据集
DefaultCategoryDataset ds = new DefaultCategoryDataset(); //获取迭代器:
Set<Entry<String, Map<String, Double>>> set1 = datas.entrySet(); //总数据
Iterator iterator1=(Iterator) set1.iterator(); //第一次迭代
Iterator iterator2=null;
HashMap<String, Double> map = null;
Set<Entry<String,Double>> set2=null;
Entry entry1=null;
Entry entry2=null;
int index=;
while(iterator1.hasNext()){//4种分类
entry1=(Entry) iterator1.next(); //遍历分类
map=(HashMap<String, Double>) entry1.getValue();//得到每次分类的详细信息
System.err.println(map.size());
set2=map.entrySet(); //获取键值对集合
iterator2=set2.iterator(); //再次迭代遍历
while (iterator2.hasNext()) {//4-4 entry2= (Entry) iterator2.next();
ds.setValue(Double.parseDouble(entry2.getValue().toString()),//每次统计数量
entry2.getKey().toString(), //名称
entry1.getKey().toString()); //分类
System.out.println("当前:--- "+entry2.getKey().toString()+"--"
+entry2.getValue().toString()+"--"
+entry1.getKey().toString());
}
System.out.println("--------------------------");
} //创建折线图,折线图分水平显示和垂直显示两种
// JFreeChart chart2 = ChartFactory.createLineChart(title, type, danwei, ds,//2D折线图
68 // PlotOrientation.VERTICAL,
69 // true, true, true);
JFreeChart chart = ChartFactory.createLineChart3D(title, type, danwei, ds,//3D折线图
PlotOrientation.VERTICAL,
true, true, false); //设置整个图片的标题字体
chart.getTitle().setFont(font); //设置提示条字体
font = new Font("宋体", Font.BOLD, );
chart.getLegend().setItemFont(font); //得到绘图区
CategoryPlot plot = (CategoryPlot) chart.getPlot();
//得到绘图区的域轴(横轴),设置标签的字体
plot.getDomainAxis().setLabelFont(font); //设置横轴标签项字体
plot.getDomainAxis().setTickLabelFont(font); //设置范围轴(纵轴)字体
font = new Font("宋体", Font.BOLD, );
plot.getRangeAxis().setLabelFont(font);
//存储成图片 //设置chart的背景图片
chart.setBackgroundImage(ImageIO.read(new File("f:/test/1.jpg"))); // plot.setBackgroundImage(ImageIO.read(new File("f:/test/2.jpg"))); plot.setForegroundAlpha(1.0f); ChartUtilities.saveChartAsJPEG(new File("f:/test/cc.png"), chart, , );
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) { Map<String, Map<String, Double>> datas =new HashMap<String, Map<String,Double>>(); Map<String, Double> map1=new HashMap<String, Double>();
Map<String, Double> map2=new HashMap<String, Double>();
Map<String, Double> map3=new HashMap<String, Double>();
Map<String, Double> map4=new HashMap<String, Double>(); //设置第一期的投票信息 map1.put("蔷薇", (double) );
map1.put("彦", (double) );
map1.put("蕾娜", (double) );
map1.put("琴女", (double) ); //设置第二期的投票信息
map2.put("蔷薇", (double) );
map2.put("彦", (double) );
map2.put("蕾娜", (double) );
map2.put("琴女", (double) ); //设置第三期的投票信息
map3.put("蔷薇", (double) );
map3.put("彦", (double) );
map3.put("蕾娜", (double) );
map3.put("琴女", (double) ); //设置第四期的投票信息
map4.put("蔷薇", (double) );
map4.put("彦", (double) );
map4.put("蕾娜", (double) );
map4.put("琴女", (double) ); //压入数据
datas.put("第一季", map1);
datas.put("第二季", map2);
datas.put("第三季", map3);
datas.put("第四季", map4); Font font = new Font("宋体", Font.BOLD, );
CharReport_ZXT.createPort("超神学院前四季最受欢迎的女性角色投票结果",datas,"超神纪元","数量单位(票)",font); } }
运行效果:
Java-jfree报表(学习整理)----饼状图、柱状图、折线统计图的更多相关文章
- jqPlot图表插件学习之饼状图和环状图
一.准备工作 官网下载(笔者选择的是jquery.jqplot.1.0.8r1250.zip这个版本) 然后读者需要根据自己的情况新建一个项目并且按照如下的方式加载对应的js和css(因为笔者在VS2 ...
- canvas学习之饼状图
接着上一节说,这次我使用canvas绘制了饼状图,主要是SectorGraph.js, 引入 import {canvasPoint} from '../../assets/js/canvas';im ...
- swift app中展示折线图, 饼状图, 柱状图等数据图表
github 下载Charts-master SDK,该SDK有多种可自定义的图表样式 lineChart 正弦余弦线图 LineChart (cubic lines) LineChart (grad ...
- PSP 进度条 柱状图 饼状图
9号 类别 开始时间 结束时间 间隔 净时间 燃尽图 8::00 8:20 0 20分钟 站立会议 8:20 8:50 0 30分钟 读构建之法 9:20 13:20 120分钟 120分钟 四人小组 ...
- C#+JQuery+.Ashx+百度Echarts实现全国省市地图和饼状图动态数据图形报表的统计
在目前的一个项目中,需要用到报表表现数据,这些数据有多个维度,需要同时表现出来,同时可能会有大量数据呈现的需求,经过几轮挑选,最终选择了百度的echarts作为报表基础类库.echarts功能强大,界 ...
- Java创建柱状图及饼状图
Java创建图表其实还是很方便的,但是要引入相关的jar包.如下 jfreechart.jar jcommon,jar gnujaxp.jar 其中最主要的是jfreechart.jar. 下面就让我 ...
- java 柱状图、折线图、饼状图
1.绘制柱状图: //BarChartTool工具类代码 package GUIview; import HibernateTool.HibernateTools; import ProductCla ...
- Android开源图表之树状图和饼状图的官方示例的整理
最近由于工作需要,所以就在github上搜了下关于chart的三方框架 官方地址https://github.com/PhilJay/MPAndroidChart 由于工作需要我这里整理了一份Ecli ...
- 一款基于jQuery饼状图比例分布数据报表
今天给大家带来一款基于jQuery饼状图比例分布数据报表.这款报表插件适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览 ...
随机推荐
- AppFabric 版本区分
目前CSDN上可以下载到的 AppFabric有两个版本: 1, WindowsServerAppFabricSetup_x64_6.1.exe, 2010/12/3 发布的, 不推荐使用,Wi ...
- [comparator] 策略模式
我们知道策略模式,首先是各种策略可以替换,其实我们常见的Arrays.sort();中可以指定比较器,实现comparator接口的比较器,作为对象传入,这不就是策略模式吗,好理解吧
- bzoj 4034 [HAOI2015] T2(树链剖分,线段树)
4034: [HAOI2015]T2 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1536 Solved: 508[Submit][Status] ...
- 《锋利的Jquery第二版》读书笔记 第三章
DOM操作的分类 1.DOM Core不专属JavaScript,任何一种支持DOM的程序设计语言都可以使用它,也可以处理XML等标记语言编写出来的文档,getElementById().setAtt ...
- Dijkstra算法构造单源点最短路径
迪杰斯特拉(Dijkstra)算法 是求从某个源点到其余各顶点的最短路径,即对已知图 G=(V,E),给定源顶点 s∈V,找出 s 到图中其它各顶点的最短路径. 我总结下核心算法,伪代码如下: Dij ...
- window7电脑设置好了,却无法远程?
设置远程连接: 步骤:右键[我的电脑]-->[属性] 点击[远程设置],然后设置如下: 在 cmd 中 通过 [ipconfig]命令查看IP: 以上设置好了,发现仍无法远程?解决办法如下: 电 ...
- [转] rtp h264注意点(FU-A分包方式说明)
总括: 一帧视频数据可以编码成多个H264的NALU, 每个NALU的开头为00 00 00 01: 一个RTP包可以传送 部分.一个或多个 NALU,看NALU的大小而定. 之前写过一篇文章,分析了 ...
- css写法效率问题
这篇文章写的很好了,其实大多数很牛的博客,都是对国外文献的翻译,国内文章的好坏,关键取决于翻译者理解和翻译水平. https://developer.mozilla.org/en-US/docs/We ...
- Ubuntu14.04搭建cocos2dx2.2.5开发环境(超级具体)
一 下载解压 官方下载地址:http://www.cocos2d-x.org/download 下载下来之后解压完毕之后会得到一个文件夹cocos2d-x-2.2.5 二 编译 1 安装依赖 cd到c ...
- 解析xlsx与xls--使用2012poi.jar
1.导入Jar包:poi-3.8-20120326.jar.poi-ooxml-3.8-20120326.jar.poi-ooxml-schemas-3.8-20120326.jar.xbean.ja ...