分享

第一个JFreeChart实例

 昵称7713248 2011-09-14

第一个JFreeChart实例

时间:2010-03-16 23:34 来源:三知开发网 作者:许亮 点击: 1198次

JFreeChart的使用非常简单,我们只需要提供满足JFreeChart需要的数据,即可使用ChartFactory创建一个JFreeChart图表,该图表既可以输出成图片文件,也可以导出成各种格式的文档。

现在以生成一张饼图为例,示范如何使用JFreeChart生成统计图。

准备

确保应用的JFreeChart配置正确:必需含有jfreechart-1.0.13.jar和jcommon-1.0.16.jar两个JAR包。

点击放大图片

PieCharDemo代码

  1. package jfreechat;  
  2.  
  3. import java.awt.Font;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6.  
  7. import org.jfree.chart.ChartFactory;  
  8. import org.jfree.chart.ChartUtilities;  
  9. import org.jfree.chart.JFreeChart;  
  10. import org.jfree.chart.plot.PiePlot;  
  11. import org.jfree.chart.title.LegendTitle;  
  12. import org.jfree.chart.title.TextTitle;  
  13. import org.jfree.data.general.DefaultPieDataset;  
  14.  
  15. public class PieCharDemo {  
  16.     public static void main(String[] args) throws IOException {  
  17.         DefaultPieDataset data = getDataset();  
  18.           
  19.         JFreeChart chart = ChartFactory.createPieChart(  
  20.             "图书销量统计图",  //图表标题  
  21.             getDataset(),       //数据  
  22.             true,               //是否显示图例  
  23.             false,              //是否显示工具提示  
  24.             false               //是否生成URL  
  25.         );  
  26.           
  27.         //重新设置图表标题,改变字体  
  28.         chart.setTitle(new TextTitle("图书销量统计图",new Font("黑体", Font.ITALIC, 22)));  
  29.         //取得统计图表的第一个图例  
  30.         LegendTitle legend = chart.getLegend(0);  
  31.         //修改图例的字体  
  32.         legend.setItemFont(new Font("宋体", Font.BOLD, 14));  
  33.         //获得饼图的Plot对象  
  34.         PiePlot plot = (PiePlot)chart.getPlot();  
  35.         //设置饼图各部分的标签字体  
  36.         plot.setLabelFont(new Font("隶属", Font.BOLD, 18));  
  37.         //设置透明度(0-1.0之间)  
  38.         plot.setBackgroundAlpha(0.9f);  
  39.           
  40.         FileOutputStream fos = new FileOutputStream("d:\\book.jpg");  
  41.         ChartUtilities.writeChartAsJPEG(  
  42.             fos,        //输出到哪个输出流  
  43.             1,          //JPEG图片的质量,0-1之间  
  44.             chart,      //统计图表对象  
  45.             800,        //图片宽度  
  46.             600,        //图片高度  
  47.             null        //ChartRebderingInfo信息  
  48.         );  
  49.           
  50.         fos.close();  
  51.     }  
  52.       
  53.     private static DefaultPieDataset getDataset(){  
  54.         DefaultPieDataset dataset = new DefaultPieDataset();  
  55.         dataset.setValue("Java疯狂讲义"47000);  
  56.         dataset.setValue("Struts2"38000);  
  57.         dataset.setValue("Hibernate"31000);  
  58.         dataset .setValue("Spring"29000);  
  59.         dataset.setValue("AJAX"25000);  
  60.         return dataset;  
  61.     }  

上面代码先提供一个方法,该方法返回Dataset()对象,这个Dataset()就是创建统计图表的底层数据,然后调用ChartFactory的createPieChart方法来生成一个JFreeChart对象,这个对象就是统计图表,该图表可以直接输出到图片文件中,也可导出成各种格式的文件。

上面的实例是导出了一张JPG格式的图片文件,编译、运行上述代码,在D:\下将生成一张book.jpg的图片,生成的饼图如下:

点击放大图片

从上图中可以看出,JFreeChart统计图可以分成3个部分:

  • 图表标题部分
  • 实际统计图部分
  • 图表图例部分

结合上面代码部分可以看出,修改统计图表的标题部分(包括修改图表标题内容、字体大小等)都是通过JFreeChart对象的setTitle方法实现的;修改统计图表的图例则是通过LegendTitle对象来完成。一个统计图表可以包含多个图例,当调用JFreeChart对象的getLegend(int index)方法时,就可以取得该图表的指定索引的图例对象,一旦取得了指定图例,就可以修改图例的文本内容、字体大小等。

在上面程序中,我们调用了ChartFactory的createPieChart方法,该方法用于创建一个平面的饼图;如果将该方法改为createPieChart3D,则可以创建一个3D的饼图。

PieChart3D代码

  1. package jfreechat;  
  2.  
  3. import java.awt.Font;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6.  
  7. import org.jfree.chart.ChartFactory;  
  8. import org.jfree.chart.ChartUtilities;  
  9. import org.jfree.chart.JFreeChart;  
  10. import org.jfree.chart.plot.PiePlot;  
  11. import org.jfree.chart.title.LegendTitle;  
  12. import org.jfree.chart.title.TextTitle;  
  13. import org.jfree.data.general.DefaultPieDataset;  
  14.  
  15. public class PieChart3D {  
  16.     public static void main(String[] args) throws IOException {  
  17.         DefaultPieDataset data = getDataset();  
  18.           
  19.         JFreeChart chart = ChartFactory.createPieChart3D(  
  20.             "图书销量统计图",  //图表标题  
  21.             getDataset(),       //数据  
  22.             true,               //是否显示图例  
  23.             false,              //是否显示工具提示  
  24.             false               //是否生成URL  
  25.         );  
  26.           
  27.         //重新设置图表标题,改变字体  
  28.         chart.setTitle(new TextTitle("图书销量统计图-3D",new Font("黑体", Font.ITALIC, 22)));  
  29.         //取得统计图表的第一个图例  
  30.         LegendTitle legend = chart.getLegend(0);  
  31.         //修改图例的字体  
  32.         legend.setItemFont(new Font("宋体", Font.BOLD, 14));  
  33.         //获得饼图的Plot对象  
  34.         PiePlot plot = (PiePlot)chart.getPlot();  
  35.         //设置饼图各部分的标签字体  
  36.         plot.setLabelFont(new Font("隶属", Font.BOLD, 18));  
  37.         //设置透明度(0-1.0之间)  
  38.         plot.setBackgroundAlpha(0.9f);  
  39.           
  40.         FileOutputStream fos = new FileOutputStream("d:\\book3D.jpg");  
  41.         ChartUtilities.writeChartAsJPEG(  
  42.             fos,        //输出到哪个输出流  
  43.             1,          //JPEG图片的质量,0-1之间  
  44.             chart,      //统计图表对象  
  45.             800,        //图片宽度  
  46.             600,        //图片高度  
  47.             null        //ChartRebderingInfo信息  
  48.         );  
  49.         fos.close();  
  50.     }  
  51.     private static DefaultPieDataset getDataset(){  
  52.         DefaultPieDataset dataset = new DefaultPieDataset();  
  53.         dataset.setValue("Java疯狂讲义"47000);  
  54.         dataset.setValue("Struts2"38000);  
  55.         dataset.setValue("Hibernate"31000);  
  56.         dataset .setValue("Spring"29000);  
  57.         dataset.setValue("AJAX"25000);  
  58.         return dataset;  
  59.     }  
点击放大图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约