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&amp;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入门相关推荐

  1. 【珍藏版】 2012Java开发工程师必备精品资料(115个)

    2019独角兽企业重金招聘Python工程师标准>>> Java应用广泛,涉及个人PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网等领域,同时拥有全球最大的开发者专业社群 ...

  2. 下载频道Java热门资料汇总

    Java应用广泛,涉及个人PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网等领域,同时拥有全球最大的开发者专业社群.网友 wglzaj 帮大家整理了115个下载中心的热门资料,制作了一个下 ...

  3. 51CTO下载中心往期头条回顾(2)

    2012.02.17 <Linux运维趋势>2012年2月号:运维安全准则 [运维人员必杀技:网络安全工具百宝箱] [webOS嵌入式开发入门] [Linux/Unix Shell编程入门 ...

  4. JFreeChart简单介绍及用法(入门)

    (学习留存,如有侵权,请告知,立刻删除!) 1.jfreechart简单介绍以及jar包下载 首先了解JFreeChart是什么,它是JAVA平台上的一个开源报表系统(开放的图表绘制类库),通过它可以 ...

  5. java项目开发实战入门电子书,java项目开发实战入门全彩版

    <JaWeb项目开发实战入门>以企业门户网.51商城.BBS--程序源论坛.YouKnow问卷.OA办公自动化系统.铭成在线考试系统.K12(中小学)综合测评系统和Show--企业个性化展 ...

  6. 【视频教程免费领取】48G全套Java视频教程,从入门到跑路!

    领取方式 关注公众号,发送java0407获取下载链接. 扫码关注公众号,公众号回复 java0407 获取下载地址 目录结构 目录:/读书ReadBook [57.6G] ┣━━48G全套Java视 ...

  7. java web入门经典 pdf_Java Web入门经典 (王国辉陈英) PDF

    资源名称:Java Web入门经典 (王国辉,陈英) PDF 第一篇 起步篇 第1章 开启jave web之门 2 第2章 不可不知的客户端应用技术 12 第3章 驾驭Java web开发环境 53 ...

  8. Java零基础无从下手?悄悄告诉你最快路径,最全方法|附Java入门基础视频教程

    学习路径:前端->后端 先学java前端,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解!其中J2SE是关键,如 ...

  9. jfreechart php,JFreeChart的使用详解

    JFreeChart一个免费的Java图表库.JFreeChart支持饼图(2D和3D),条形图(水平和垂直,整齐堆叠),线图,散点图,时序图, 高低的开闭图,烛台图,甘特图,结合地块,温度计,刻度盘 ...

最新文章

  1. Server 2012 RDS ‘there are no Remote Desktop License Servers available to provide a license.’
  2. 线性代数:第三章 矩阵的初等变换与线性方程组(1)矩阵的初等变换 矩阵的秩
  3. 华为p40鸿蒙系统价格有好高,鸿蒙系统版本华为P50新机的曝光,华为P40处境悲惨价格骤降...
  4. php获取表单后如何保存到数据库中,php – 如何将数据从HTML表单保存到WordPress中的数据库表?...
  5. HMM——前向算法与后向算法
  6. 用javascript完成pos机的输入输出
  7. 农业银行数据库最佳实践和发展规划
  8. poj 1502 MAPMaelstrom 单源最短路dijkstra
  9. a标签隐藏真实地址_推荐软件:Clover(窗口标签化工具)
  10. 一文了解Innodb中的锁
  11. java对公项目_5个让人激动的Java项目
  12. T410s主板上的黑色塑料是散热问题的祸首
  13. 自回归滑动平均(ARMA)模型
  14. 1194:移动路线(简单题日常2)
  15. VRCORE开发者大赛圆满落幕,中国虚拟现实内容大集结
  16. MapReduce之Map join操作
  17. uni-app - 禁用 APP 横屏旋转(用户操作行为)
  18. 项目管理sod_内部控制之“SOD”密
  19. 基于springboot+vue的商城系统(电商平台)(前后端分离)
  20. iPhone、iPad、iPadMini界面设计标准

热门文章

  1. 网络营销——网络营销专员浅析网站快照更新要点
  2. 中常用的数据结构_C语言实现常用数据结构:基本概念(第0篇
  3. html调用js进行MD5加密,js实现md5加密
  4. wukong引擎源码分析之索引——part 3 文档评分 无非就是将docid对应的fields信息存储起来,为搜索结果rank评分用...
  5. 达观数据分析平台架构和Hive实践——TODO
  6. yum提示Error: rpmdb open failed
  7. 【协议分析】Wireshark 过滤表达式实例
  8. C/C++中的NULL讨论和总结
  9. JS 退出系统并跳转到登录界面的实现代码
  10. AngularJS 指令之 ng-hide/ng-show