JFreeChart入门
JFreeChart主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等
(源代码下载)
示例程序运用的jar包:
- jcommon-1.0.17.jar
- jfreechart-1.0.14.jar
1:普通柱状图
这是程序调用CategoryDataset dataset = getDataSet2(); 后所生产的图片
BarChartDemo.java柱状图代码
/** * 该类用于演示最简单的柱状图生成 * @author Winter Lau */ public class BarChartDemo { public static void main(String[] args) throws IOException{ CategoryDataset dataset = getDataSet2(); JFreeChart chart = ChartFactory.createBarChart3D( "水果产量图", // 图表标题"水果", // 目录轴的显示标签"产量", // 数值轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是 false)false, // 是否生成工具false // 是否生成 URL 链接 ); //中文乱码CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis(); CategoryAxis domainAxis = categoryplot.getDomainAxis(); TextTitle textTitle = chart.getTitle();textTitle.setFont(new Font("黑体", Font.PLAIN, 20)); domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11)); domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12)); numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12)); numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12)); chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));FileOutputStream fos_jpg = null; try { fos_jpg = new FileOutputStream("D:\\BarChart.jpg"); ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f,chart,400,300,null); } finally { try { fos_jpg.close(); } catch (Exception e) {} } } /** * 获取一个演示用的简单数据集对象* @return */ private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "", "苹果"); dataset.addValue(200, "", "梨子"); dataset.addValue(300, "", "葡萄"); dataset.addValue(400, "", "香蕉"); dataset.addValue(500, "", "荔枝"); return dataset; } /** * 获取一个演示用的组合数据集对象* @return */ private static CategoryDataset getDataSet2() { 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; } }
2:饼状图
PieChartDemo.java饼状图源代码
/*** 用于演示饼图的生成*/ public class PieChartDemo {public static void main(String[] args) throws IOException {DefaultPieDataset data = getDataSet();JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", // 图表标题data, // 数据集true, // 是否显示图例(对于简单的柱状图必须是 false)false, // 是否生成工具false // 是否生成 URL 链接 );//中文乱码PiePlot3D plot = (PiePlot3D) chart.getPlot();plot.setLabelFont(new Font("黑体", Font.PLAIN, 20));TextTitle textTitle = chart.getTitle();textTitle.setFont(new Font("黑体", Font.PLAIN, 20));chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));// 写图表对象到文件,参照柱状图生成源码FileOutputStream fos_jpg = null;try {fos_jpg = new FileOutputStream("D:\\Pie3DChart.jpg");ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f, chart, 400, 300,null);} finally {try {fos_jpg.close();} catch (Exception e) {}}}/*** 获取一个演示用的简单数据集对象* * @return*/private static DefaultPieDataset getDataSet() {DefaultPieDataset dataset = new DefaultPieDataset();dataset.setValue("苹果", 100);dataset.setValue("梨子", 200);dataset.setValue("葡萄", 300);dataset.setValue("香蕉", 400);dataset.setValue("荔枝", 500);return dataset;} }
其他的图表类型暂时不写了,其实写法也差不多。这里注意两种图形的中文乱码解决方法是不一样的,具体查看源代码中的红色部分
3:将数据库的内容用图形表示出来
index.jsp
<body><form action="servlet/ShowChartServlet" method="get" ><input type="submit" value="jfreechart访问数据库生成图表"></form></body>
showJfreeChart.jsp
<body><center><img alt="" src="<%=path %>/reports/productSales.jpg"></center></body>
ShowChartServlet.java
public class ShowChartServlet extends HttpServlet {/*** 获取一个演示用的组合数据集对象* * @return*/private static CategoryDataset getDataSet() {DefaultCategoryDataset dataset = new DefaultCategoryDataset();// 从数据库中获取Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {Class.forName("com.mysql.jdbc.Driver"); // 加载驱动程序conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shopping?useUnicode=true&characterEncoding=utf8","root", "root");ps = conn.prepareStatement("select p.name, count(pcount) from product p join salesitem si on (p.id = si.productid) group by p.id");rs = ps.executeQuery();while (rs.next()) {dataset.addValue(rs.getInt(2), "", rs.getString(1));}rs.close();rs = null;} catch (SQLException e) {e.printStackTrace();}catch (ClassNotFoundException e) {e.printStackTrace();}finally {if(ps != null){try {ps.close();} catch (SQLException e) {e.printStackTrace();}}if(conn != null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}return dataset;}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {CategoryDataset dataset = getDataSet(); JFreeChart chart = ChartFactory.createBarChart3D( "产品销量图", // 图表标题"产品", // 目录轴的显示标签"销量", // 数值轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是 false)false, // 是否生成工具false // 是否生成 URL 链接 ); //中文乱码CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis(); CategoryAxis domainAxis = categoryplot.getDomainAxis(); TextTitle textTitle = chart.getTitle();textTitle.setFont(new Font("黑体", Font.PLAIN, 20)); domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11)); domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12)); numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12)); numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12)); chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));FileOutputStream fos_jpg = null; try { fos_jpg = new FileOutputStream("E:\\Workspaces\\MyEclipse 9\\WebProjects\\JFreeChart\\WebRoot\\reports\\productSales.jpg"); ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f,chart,400,300,null); String path = this.getServletContext().getContextPath();System.out.println(path+"mmmmmmmmmmm");this.getServletContext().getRequestDispatcher("/showJfreeChart.jsp").forward(request, response);} finally { try { fos_jpg.close(); } catch (Exception e) {} } }}
转载于:https://www.cnblogs.com/ITtangtang/archive/2012/05/19/2509007.html
JFreeChart入门相关推荐
- 【珍藏版】 2012Java开发工程师必备精品资料(115个)
2019独角兽企业重金招聘Python工程师标准>>> Java应用广泛,涉及个人PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网等领域,同时拥有全球最大的开发者专业社群 ...
- 下载频道Java热门资料汇总
Java应用广泛,涉及个人PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网等领域,同时拥有全球最大的开发者专业社群.网友 wglzaj 帮大家整理了115个下载中心的热门资料,制作了一个下 ...
- 51CTO下载中心往期头条回顾(2)
2012.02.17 <Linux运维趋势>2012年2月号:运维安全准则 [运维人员必杀技:网络安全工具百宝箱] [webOS嵌入式开发入门] [Linux/Unix Shell编程入门 ...
- JFreeChart简单介绍及用法(入门)
(学习留存,如有侵权,请告知,立刻删除!) 1.jfreechart简单介绍以及jar包下载 首先了解JFreeChart是什么,它是JAVA平台上的一个开源报表系统(开放的图表绘制类库),通过它可以 ...
- java项目开发实战入门电子书,java项目开发实战入门全彩版
<JaWeb项目开发实战入门>以企业门户网.51商城.BBS--程序源论坛.YouKnow问卷.OA办公自动化系统.铭成在线考试系统.K12(中小学)综合测评系统和Show--企业个性化展 ...
- 【视频教程免费领取】48G全套Java视频教程,从入门到跑路!
领取方式 关注公众号,发送java0407获取下载链接. 扫码关注公众号,公众号回复 java0407 获取下载地址 目录结构 目录:/读书ReadBook [57.6G] ┣━━48G全套Java视 ...
- java web入门经典 pdf_Java Web入门经典 (王国辉陈英) PDF
资源名称:Java Web入门经典 (王国辉,陈英) PDF 第一篇 起步篇 第1章 开启jave web之门 2 第2章 不可不知的客户端应用技术 12 第3章 驾驭Java web开发环境 53 ...
- Java零基础无从下手?悄悄告诉你最快路径,最全方法|附Java入门基础视频教程
学习路径:前端->后端 先学java前端,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解!其中J2SE是关键,如 ...
- jfreechart php,JFreeChart的使用详解
JFreeChart一个免费的Java图表库.JFreeChart支持饼图(2D和3D),条形图(水平和垂直,整齐堆叠),线图,散点图,时序图, 高低的开闭图,烛台图,甘特图,结合地块,温度计,刻度盘 ...
最新文章
- Server 2012 RDS ‘there are no Remote Desktop License Servers available to provide a license.’
- 线性代数:第三章 矩阵的初等变换与线性方程组(1)矩阵的初等变换 矩阵的秩
- 华为p40鸿蒙系统价格有好高,鸿蒙系统版本华为P50新机的曝光,华为P40处境悲惨价格骤降...
- php获取表单后如何保存到数据库中,php – 如何将数据从HTML表单保存到WordPress中的数据库表?...
- HMM——前向算法与后向算法
- 用javascript完成pos机的输入输出
- 农业银行数据库最佳实践和发展规划
- poj 1502 MAPMaelstrom 单源最短路dijkstra
- a标签隐藏真实地址_推荐软件:Clover(窗口标签化工具)
- 一文了解Innodb中的锁
- java对公项目_5个让人激动的Java项目
- T410s主板上的黑色塑料是散热问题的祸首
- 自回归滑动平均(ARMA)模型
- 1194:移动路线(简单题日常2)
- VRCORE开发者大赛圆满落幕,中国虚拟现实内容大集结
- MapReduce之Map join操作
- uni-app - 禁用 APP 横屏旋转(用户操作行为)
- 项目管理sod_内部控制之“SOD”密
- 基于springboot+vue的商城系统(电商平台)(前后端分离)
- iPhone、iPad、iPadMini界面设计标准
热门文章
- 网络营销——网络营销专员浅析网站快照更新要点
- 中常用的数据结构_C语言实现常用数据结构:基本概念(第0篇
- html调用js进行MD5加密,js实现md5加密
- wukong引擎源码分析之索引——part 3 文档评分 无非就是将docid对应的fields信息存储起来,为搜索结果rank评分用...
- 达观数据分析平台架构和Hive实践——TODO
- yum提示Error: rpmdb open failed
- 【协议分析】Wireshark 过滤表达式实例
- C/C++中的NULL讨论和总结
- JS 退出系统并跳转到登录界面的实现代码
- AngularJS 指令之 ng-hide/ng-show