博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

JFreeChart 柱形图、折线图、饼图、条形图

Posted on 2013-06-25 17:29  TimeFight  阅读(746)  评论(0)    收藏  举报
  1. Java代码  收藏代码
    1. import java.awt.Font;  
    2. import java.io.IOException;  
    3.   
    4. import javax.servlet.ServletException;  
    5. import javax.servlet.http.HttpServlet;  
    6. import javax.servlet.http.HttpServletRequest;  
    7. import javax.servlet.http.HttpServletResponse;  
    8.   
    9. import org.jfree.chart.ChartFactory;  
    10. import org.jfree.chart.ChartUtilities;  
    11. import org.jfree.chart.JFreeChart;  
    12. import org.jfree.chart.axis.CategoryAxis;  
    13. import org.jfree.chart.axis.ValueAxis;  
    14. import org.jfree.chart.plot.CategoryPlot;  
    15. import org.jfree.chart.plot.PlotOrientation;  
    16. import org.jfree.data.category.DefaultCategoryDataset;  
    17.   
    18. public class CategoryServlet extends HttpServlet {  
    19.   
    20.     /** 
    21.      *  
    22.      */  
    23.     private static final long serialVersionUID = 6228999300370044372L;  
    24.   
    25.     /** 
    26.      * The doGet method of the servlet. <br> 
    27.      * 
    28.      * This method is called when a form has its tag value method equals to get. 
    29.      *  
    30.      * @param request the request send by the client to the server 
    31.      * @param response the response send by the server to the client 
    32.      * @throws ServletException if an error occurred 
    33.      * @throws IOException if an error occurred 
    34.      */  
    35.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
    36.             throws ServletException, IOException {  
    37.   
    38.         response.setContentType("image/jpeg");  
    39.         //创建3D柱形图  
    40.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
    41.         dataset.addValue(610"广州""猪肉");  
    42.         dataset.addValue(220"广州""牛肉");  
    43.         dataset.addValue(530"广州""鸡肉");  
    44.         dataset.addValue(340"广州""鱼肉");  
    45.           
    46.         JFreeChart chart = ChartFactory.createBarChart3D("肉类销量统计图""肉类",  
    47.                 "销量", dataset, PlotOrientation.VERTICAL, truefalse,  
    48.                 false);  
    49.           
    50.         Font font = new Font("宋体"012);//创建字体对象  
    51.         chart.getLegend().setItemFont(font);//设置图例字体  
    52.         chart.getTitle().setFont(font);//设置标题字体  
    53.         CategoryPlot plot = chart.getCategoryPlot();  
    54.   
    55.         CategoryAxis domainAxis = plot.getDomainAxis();  
    56.         domainAxis.setTickLabelFont(font);//设置X轴坐标上的文字  
    57.         domainAxis.setLabelFont(font);//设置X轴标题上的文字  
    58.           
    59.         ValueAxis rangeAxis = plot.getRangeAxis();  
    60.         rangeAxis.setTickLabelFont(font);//设置Y轴坐标上的文字  
    61.         rangeAxis.setLabelFont(font);//设置Y轴标题上的文字  
    62.           
    63.         // 输出图片      
    64.         ChartUtilities.writeChartAsJPEG(response.getOutputStream(),0.5f,chart,800,600,null);  
    65.     }  
    66.   
    67. }  
     2.
    Java代码  收藏代码
    1. import java.awt.Font;  
    2. import java.io.IOException;  
    3.   
    4. import javax.servlet.ServletException;  
    5. import javax.servlet.http.HttpServlet;  
    6. import javax.servlet.http.HttpServletRequest;  
    7. import javax.servlet.http.HttpServletResponse;  
    8.   
    9. import org.jfree.chart.ChartFactory;  
    10. import org.jfree.chart.ChartUtilities;  
    11. import org.jfree.chart.JFreeChart;  
    12. import org.jfree.chart.plot.PiePlot;  
    13. import org.jfree.data.general.DefaultPieDataset;  
    14.   
    15. public class PieServlet extends HttpServlet {  
    16.   
    17.     /** 
    18.      *  
    19.      */  
    20.     private static final long serialVersionUID = 8827627228843788090L;  
    21.   
    22.     /** 
    23.      * The doGet method of the servlet. <br> 
    24.      *  
    25.      * This method is called when a form has its tag value method equals to get. 
    26.      *  
    27.      * @param request 
    28.      *            the request send by the client to the server 
    29.      * @param response 
    30.      *            the response send by the server to the client 
    31.      * @throws ServletException 
    32.      *             if an error occurred 
    33.      * @throws IOException 
    34.      *             if an error occurred 
    35.      */  
    36.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
    37.             throws ServletException, IOException {  
    38.   
    39.         response.setContentType("image/jpeg");  
    40.           
    41.         // 设置数据集  
    42.         DefaultPieDataset dataset = new DefaultPieDataset();  
    43.         dataset.setValue("初中高级程序员"0.55);  
    44.         dataset.setValue("项目经理"0.1);  
    45.         dataset.setValue("系统分析师"0.1);  
    46.         dataset.setValue("软件架构师"0.1);  
    47.         dataset.setValue("其他"0.2);  
    48.           
    49.         //创建3D饼图  
    50.         JFreeChart chart = ChartFactory.createPieChart3D("饼图"// chart title  
    51.                 dataset,// data  
    52.                 true// include legend  
    53.                 true,   
    54.                 false);  
    55.           
    56.         // 设置图表属性  
    57.         PiePlot piePlot = (PiePlot) chart.getPlot();  
    58.         piePlot.setCircular(true);//饼图是否一定是正圆  
    59.         Font font = new Font("宋体"012);//创建字体对象  
    60.         piePlot.setLabelFont(font);//设置标签字体  
    61.         chart.getTitle().setFont(font);//设置标题字体  
    62.           
    63.         //没有数据的时候显示的内容  
    64.         piePlot.setNoDataMessage("无数据显示");  
    65.         piePlot.setCircular(false);  
    66.         piePlot.setLabelGap(0.02D);  
    67.           
    68.         // 输出图片      
    69.         ChartUtilities.writeChartAsJPEG(response.getOutputStream(),0.5f,chart,800,600,null);  
    70.     }  
    71.   
    72. }  
  2.  3.
    Java代码  收藏代码
    1. import java.awt.Font;  
    2. import java.io.FileNotFoundException;  
    3. import java.io.FileOutputStream;  
    4. import java.io.IOException;  
    5.   
    6. import org.jfree.chart.ChartFactory;  
    7. import org.jfree.chart.ChartUtilities;  
    8. import org.jfree.chart.JFreeChart;  
    9. import org.jfree.chart.plot.PlotOrientation;  
    10. import org.jfree.data.category.DefaultCategoryDataset;  
    11.   
    12. /** 
    13.  *  
    14.  * 折线图 
    15.  */  
    16.   
    17. public class PolyLine {  
    18.   
    19.     public static void createPolyLine() {  
    20.   
    21.         /* 
    22.          *  
    23.          * 报表字体 
    24.          */  
    25.   
    26.         final Font CHART_FONT = new Font("宋体"1212);  
    27.   
    28.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
    29.         dataset.addValue(100"ten""jfree");  
    30.         dataset.addValue(150"ten""chart");  
    31.         dataset.addValue(300"ten""struts");  
    32.         dataset.addValue(100"ten""hibernate");  
    33.   
    34.         /* 
    35.          *  
    36.          * 三维折线图把createLineChart换成createLineChart3D就可以实现三维折线图。 
    37.          */  
    38.         JFreeChart chart = ChartFactory.createLineChart3D(  
    39.                 "chart"// 标题  
    40.                 "num"// 横坐标  
    41.                 "type"// 纵坐标  
    42.                 dataset, // 数据  
    43.                 PlotOrientation.VERTICAL, // 竖直图表  
    44.                 true// 是否显示legend  
    45.                 false// 是否显示tooltip  
    46.                 false // 是否使用url链接  
    47.                 );  
    48.         // XYPlot plot = null;  
    49.         // 设置字体,解决中文乱码问题  
    50.         chart.getTitle().setFont(CHART_FONT);  
    51.         chart.getLegend().setItemFont(CHART_FONT);  
    52.         // plot.getRangeAxis().setLabelFont(CHART_FONT);  
    53.         // plot.getDomainAxis().setLabelFont(new Font("宋体", 12, 24));  
    54.         FileOutputStream fos = null;  
    55.         try {  
    56.             fos = new FileOutputStream("src/poly3d.png");  
    57.             ChartUtilities.writeChartAsPNG(fos, chart, 400300);  
    58.         } catch (FileNotFoundException e) {  
    59.             e.printStackTrace();  
    60.         } catch (IOException e) {  
    61.             e.printStackTrace();  
    62.         } finally {  
    63.             try {  
    64.                 fos.close();  
    65.             } catch (IOException e) {  
    66.                 e.printStackTrace();  
    67.             }  
    68.         }  
    69.     }  
    70.   
    71.     public static void main(String[] args) {  
    72.   
    73.         PolyLine.createPolyLine();  
    74.   
    75.     }  
    76. }  
     
  3. 饼图
    Java代码  收藏代码
    1. import java.awt.Color;  
    2. import java.awt.Dimension;  
    3. import java.awt.Font;  
    4. import java.text.NumberFormat;  
    5.   
    6. import javax.swing.JPanel;  
    7.   
    8. import org.jfree.chart.ChartFactory;  
    9. import org.jfree.chart.ChartPanel;  
    10. import org.jfree.chart.JFreeChart;  
    11. import org.jfree.chart.StandardChartTheme;  
    12. import org.jfree.chart.labels.StandardPieSectionLabelGenerator;  
    13. import org.jfree.chart.plot.PiePlot;  
    14. import org.jfree.data.general.DefaultPieDataset;  
    15. import org.jfree.ui.ApplicationFrame;  
    16. import org.jfree.ui.RefineryUtilities;  
    17.   
    18. public class Test1 extends ApplicationFrame {  
    19.     /** 
    20.      *  
    21.      */  
    22.     private static final long serialVersionUID = -8028194135638567202L;  
    23.       
    24.     public static final Font DEFAULT_FONT = new Font("宋体", Font.PLAIN, 12);  
    25.       
    26.     public Test1(String title) {  
    27.         super(title);  
    28.         JPanel localJPanel = createDemoPanel();  
    29.         localJPanel.setPreferredSize(new Dimension(500270));  
    30.         setContentPane(localJPanel);  
    31.     }  
    32.       
    33.     public static JPanel createDemoPanel() {  
    34.         DefaultPieDataset defaultpiedataset = createDataset();  
    35.           
    36.         ChartFactory.setChartTheme(createStandardChartTheme());  
    37.           
    38.         JFreeChart jfreechart = ChartFactory.createPieChart("饼图",  
    39.                 defaultpiedataset, truetruefalse);  
    40.           
    41.         jfreechart.setBackgroundPaint(new Color(222222255));  
    42.         //获取PiePlot对象,用于设置饼图的相关属性,如:颜色、形状……  
    43.         PiePlot pieplot = (PiePlot) jfreechart.getPlot();  
    44.         pieplot.setSectionPaint("壹"new Color(222222255));  
    45.         pieplot.setBackgroundPaint(Color.white);  
    46.         pieplot.setCircular(true);  
    47.         //自定义显示百分比样式  
    48.         //图片中显示百分比:自定义方式,{0} 表示选项,{1} 表示数值, {2} 表示所占百分比  
    49.         pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(  
    50.         "{0} = {2}", NumberFormat.getNumberInstance(), NumberFormat.getPercentInstance()));  
    51.         //设置图片突起部分  
    52. //      pieplot.setExplodePercent("Section 1", 0.5D);  
    53.         pieplot.setNoDataMessage("No data available");  
    54.         ChartPanel chartpanel = new ChartPanel(jfreechart);  
    55.         chartpanel.setPreferredSize(new Dimension(500270));  
    56.         //旋转  
    57. //      Rotator rotator = new Rotator(pieplot);  
    58. //      rotator.start();  
    59.         return chartpanel;  
    60.     }  
    61.       
    62.     private static DefaultPieDataset createDataset() {  
    63.         DefaultPieDataset defaultpiedataset = new DefaultPieDataset();  
    64.         defaultpiedataset.setValue("壹"23.3);  
    65.         defaultpiedataset.setValue("贰"56.5);  
    66.         defaultpiedataset.setValue("参"43.3);  
    67.         defaultpiedataset.setValue("肆"11.1);  
    68.         return defaultpiedataset;  
    69.     }  
    70.   
    71.     /** 
    72.      * @param args 
    73.      */  
    74.     public static void main(String[] args) {  
    75.         Test1 test1 = new Test1("");  
    76.         test1.pack();  
    77.         RefineryUtilities.centerFrameOnScreen(test1);  
    78.         test1.setVisible(true);  
    79.     }  
    80.       
    81.     //设计饼图的一个标准模板  
    82.     public static StandardChartTheme createStandardChartTheme() {  
    83.         //创建主题样式  
    84.         StandardChartTheme standardChartTheme = new StandardChartTheme("CN");  
    85.         //设置标题字体  
    86.         standardChartTheme.setExtraLargeFont(DEFAULT_FONT);  
    87.         //设置图例子图  
    88.         standardChartTheme.setRegularFont(DEFAULT_FONT);  
    89.         //设置轴向字体  
    90.         standardChartTheme.setLargeFont(DEFAULT_FONT);  
    91.         return standardChartTheme;  
    92.     }  
    93.   
    94. }  
     
  4. 条形图
    Java代码  收藏代码
    1. import java.awt.Color;  
    2. import java.awt.Dimension;  
    3. import java.awt.Font;  
    4. import java.awt.GradientPaint;  
    5.   
    6. import org.jfree.chart.ChartFactory;  
    7. import org.jfree.chart.ChartPanel;  
    8. import org.jfree.chart.JFreeChart;  
    9. import org.jfree.chart.axis.CategoryAxis;  
    10. import org.jfree.chart.axis.CategoryLabelPositions;  
    11. import org.jfree.chart.axis.NumberAxis;  
    12. import org.jfree.chart.plot.CategoryPlot;  
    13. import org.jfree.chart.plot.PlotOrientation;  
    14. import org.jfree.chart.renderer.category.BarRenderer;  
    15. import org.jfree.data.category.CategoryDataset;  
    16. import org.jfree.data.category.DefaultCategoryDataset;  
    17. import org.jfree.ui.ApplicationFrame;  
    18. import org.jfree.ui.RefineryUtilities;  
    19.   
    20. public class Test2 extends ApplicationFrame {  
    21.   
    22.     /** 
    23.      *  
    24.      */  
    25.     private static final long serialVersionUID = 1107365396303352467L;  
    26.       
    27.     public static final Font DEFAULT_FONT = new Font("宋体", Font.PLAIN, 12);  
    28.       
    29.     public Test2(String title) {  
    30.         super(title);  
    31.         JFreeChart chart = createChart(createDataset());  
    32.         ChartPanel chartPanel = new ChartPanel(chart, false);  
    33.         chartPanel.setPreferredSize(new Dimension(500270));  
    34.         setContentPane(chartPanel);  
    35.     }  
    36.     private CategoryDataset createDataset() {  
    37.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
    38.         dataset.addValue(1.0"Row 1""Column 1");  
    39.         dataset.addValue(5.0"Row 1""Column 2");  
    40.         dataset.addValue(3.0"Row 1""Column 3");  
    41.         dataset.addValue(2.0"Row 2""Column 1");  
    42.         dataset.addValue(3.0"Row 2""Column 2");  
    43.         dataset.addValue(2.0"Row 2""Column 3");  
    44.         return dataset;  
    45.     }  
    46.       
    47.     private JFreeChart createChart(CategoryDataset dataset) {  
    48.         JFreeChart chart = ChartFactory.createBarChart("BarChartDemo"// chart title  
    49.         "Category"// domain axis label  
    50.         "Value"// range axis label  
    51.         dataset, // data  
    52.         PlotOrientation.VERTICAL, // orientation  
    53.         true// include legend  
    54.         true// tooltips?  
    55.         false // URLs?  
    56.         );  
    57.         chart.setBackgroundPaint(Color.white);  
    58.         CategoryPlot plot = (CategoryPlot) chart.getPlot();  
    59.         plot.setBackgroundPaint(Color.lightGray);  
    60.         plot.setRangeGridlinePaint(Color.white);  
    61.           
    62.         //刻度轴刻度设置  
    63.         NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();  
    64.         numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());  
    65.         //设置颜色  
    66.         BarRenderer renderer = (BarRenderer) plot.getRenderer();  
    67.         renderer.setSeriesPaint(0, Color.gray);  
    68.         renderer.setSeriesPaint(1, Color.orange);  
    69.         renderer.setDrawBarOutline(false);  
    70.           
    71.         renderer.setDrawBarOutline(false);//设置外廓线不可见  
    72.         GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.blue,  
    73.         0.0F, 0.0F, new Color(0064));  
    74.         GradientPaint gradientpaint_7_ = new GradientPaint(0.0F, 0.0F,  
    75.         Color.green, 0.0F, 0.0F, new Color(0640));  
    76.         GradientPaint gradientpaint_8_ = new GradientPaint(0.0F, 0.0F,  
    77.         Color.red, 0.0F, 0.0F, new Color(6400));  
    78.         renderer.setSeriesPaint(0, gradientpaint);  
    79.         renderer.setSeriesPaint(1, gradientpaint_7_);  
    80.         renderer.setSeriesPaint(2, gradientpaint_8_);  
    81.         //设置种类里直方条形图之间的空间  
    82.         renderer.setItemMargin(0.0);  
    83.         //设置种类标签旋转的角度,逆时针旋转  
    84.         CategoryAxis categoryaxis = plot.getDomainAxis();  
    85.         categoryaxis.setCategoryLabelPositions(CategoryLabelPositions  
    86.         .createUpRotationLabelPositions(Math.PI / 6));  
    87.         return chart;  
    88.     }  
    89.     /** 
    90.      * @param args 
    91.      */  
    92.     public static void main(String[] args) {  
    93.         Test2 demo = new Test2("Bar Demo");  
    94.         demo.pack();  
    95.         RefineryUtilities.centerFrameOnScreen(demo);  
    96.         demo.setVisible(true);  
    97.     }  
    98.   
    99. }  

转载自:http://yanqihubian.iteye.com/blog/1499385