使用JFreeChart绘制饼图
2015-12-20 10:30
363 查看
JFreeChart是一款开源的Java图表绘制工具,其图表种类丰富、接口通俗易懂、支持多种显示方式,如application、applets、servlet和JSP。可以很方便地绘制饼图、双轴图、折线图、柱形图、气泡图、环形图和时序图等等。下面介绍用JFreeChart绘制饼图。
1.下载JFreeChart包,地址:http://download.csdn.net/download/wangshuxuncom/7119629 ,这里用到了里面的两个jar文件:jcommon-1.0.16.jar和 jfreechart-1.0.13.jar。
2. 打开Eclipse,新建一个Java工程:ChartOne,在ChartOne/src下创建两个package:com.tu和img,右击包com.tu –》new/Class —》名称为:ChartZi,右击img —》import —》File System –》找到backgroundImage.jpg —>OK,工程文件的布局如下:
图(1) 引用两个.jar包:jcommon-1.0.16.jar、jfreechart-1.0.13.jar
3. 绘制饼图的源代码:
//ChartZi.java
效果如下:
图(2) 带有提示功能的饼图
说明:对于Java工程,语句File f = new File(“Hello.txt”),文件Hello.txt既可以采用绝对路径,也可以采用相对路径。当采用相对路径时,路径的起点是.classpath配置文件里<classpathentry kind=”src” path=”src”/>的path属性值:src,如图(3)所示:
图(3)文件 .classpath里【path属性】指出了相对路径的起点: src
1.下载JFreeChart包,地址:http://download.csdn.net/download/wangshuxuncom/7119629 ,这里用到了里面的两个jar文件:jcommon-1.0.16.jar和 jfreechart-1.0.13.jar。
2. 打开Eclipse,新建一个Java工程:ChartOne,在ChartOne/src下创建两个package:com.tu和img,右击包com.tu –》new/Class —》名称为:ChartZi,右击img —》import —》File System –》找到backgroundImage.jpg —>OK,工程文件的布局如下:
图(1) 引用两个.jar包:jcommon-1.0.16.jar、jfreechart-1.0.13.jar
3. 绘制饼图的源代码:
//ChartZi.java
package com.tu; import java.awt.Font; import java.awt.Image; import java.io.File; import javax.imageio.ImageIO; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.PiePlot; import org.jfree.chart.title.LegendTitle; import org.jfree.chart.title.TextTitle; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; public class ChartZi { public JFreeChart getJFreeChart(){ PieDataset dataset = getPieDataset(); JFreeChart chart = ChartFactory.createPieChart("2015.8月份销售排行", dataset, true, true, false); //关闭锯齿形 chart.setAntiAlias(false); return chart; } //设置图形上的字体 public void setPiePoltFont(JFreeChart chart){ //饼图 PiePlot piePlot = (PiePlot)chart.getPlot(); piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14)); //标题 TextTitle textTitle = chart.getTitle(); textTitle.setFont(new Font("宋体", Font.BOLD, 20)); //图例 LegendTitle legendTitle = chart.getLegend(); legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 12)); } //设置百分比数字 public void setPiePoltNum(JFreeChart chart){ PiePlot piePlot = (PiePlot)chart.getPlot(); piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}本")); } //设置背景 public void setBackgroundImage(JFreeChart chart){ Image image = null; try { //读取图片 //绝对路径 String path = "G:/Workspaces/Eclipse/Chap1/ChartOne/src/img/backgroundImage.jpg"; String path3; //相对路径,以配置文件.classpath为参考点 path3 = "src/img/backgroundImage.jpg"; image = ImageIO.read(new File(path3)); } catch (Exception e) { e.printStackTrace(); } PiePlot piePlot = (PiePlot)chart.getPlot(); //设置饼图背景图 piePlot.setBackgroundImage(image); } //创建饼图表的数据集 private PieDataset getPieDataset(){ DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("JAVA从入门到精通(第2版)", 500); dataset.setValue("视频学JAVA", 800); dataset.setValue("JAVA全能速查宝典", 1000); return dataset; } public static void main(String[] args) { ChartZi demo = new ChartZi(); JFreeChart chart = demo.getJFreeChart(); demo.setPiePoltFont(chart); demo.setPiePoltNum(chart); demo.setBackgroundImage(chart); ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart); chartFrame.pack(); chartFrame.setVisible(true); } }
效果如下:
图(2) 带有提示功能的饼图
说明:对于Java工程,语句File f = new File(“Hello.txt”),文件Hello.txt既可以采用绝对路径,也可以采用相对路径。当采用相对路径时,路径的起点是.classpath配置文件里<classpathentry kind=”src” path=”src”/>的path属性值:src,如图(3)所示:
图(3)文件 .classpath里【path属性】指出了相对路径的起点: src
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树