JFreeChart简单小例子

转载 2013年12月02日 21:32:29
import java.awt.Font;
import java.awt.RenderingHints;
import java.io.File;
import java.io.IOException;
 
import org.jfree.chart.ChartColor;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.util.Rotation;
 
public class CreateChart {
 
       public static void main(String[] args) {
            CreateChart cc = new CreateChart();
            cc.setChartTheme();
            cc.createPieChart();
            cc.createPieChart3D();
            cc.createColumnChart();
            cc.createColumnChart3D();
            cc.createLineChart();
            cc.createLineChart3D();
      }
 
       /**
       * 防止中文乱码,设置图表主题的默认实现
       *
       * @return
       */
       @SuppressWarnings ("serial" )
       public void setChartTheme() {
            StandardChartTheme theme = new StandardChartTheme("CN" ) {
                   // 重写apply(...)方法借机消除文字锯齿.VALUE_TEXT_ANTIALIAS_OFF
                   public void apply(JFreeChart chart) {
                        chart.getRenderingHints().put(
                                    RenderingHints. KEY_TEXT_ANTIALIASING ,
                                    RenderingHints. VALUE_TEXT_ANTIALIAS_OFF );
                         super .apply(chart);
                  }
            };
             // 标题乱码解决
            theme.setExtraLargeFont( new Font("宋体" , Font. PLAIN, 20));
             // 图例乱码解决
            theme.setRegularFont( new Font("宋体" , Font. PLAIN, 12));
            theme.setLargeFont( new Font("宋体" , Font. PLAIN, 14));
            theme.setSmallFont( new Font("宋体" , Font. PLAIN, 10));
            theme.setBaselinePaint(java.awt.Color. white );
             // 应用主题样式
            ChartFactory. setChartTheme(theme);
      }
 
       /**
       * 饼状图
       */
       public void createPieChart() {
            DefaultPieDataset dataset = new DefaultPieDataset();
            dataset.setValue( "苹果" , 250);
            dataset.setValue( "桔子" , 350);
            dataset.setValue( "梨子" , 200);
            dataset.setValue( "香蕉" , 50);
            dataset.setValue( "荔枝" , 150);
            JFreeChart chart = ChartFactory. createPieChart( "水果产量比率图" , dataset,
                         true true true);
 
            Plot cp = chart.getPlot();
            cp.setBackgroundPaint(ChartColor. WHITE ); // 背景色设置
 
             // ChartFrame frame = new ChartFrame("水果产量比率图 ", chart, true);
             // frame.pack();
             // frame.setVisible(true);
 
             try {
                  ChartUtilities. saveChartAsPNG( new File("D:/temp/PieChart.png" ),
                              chart, 800, 500);
            } catch (IOException e) {
                  e.printStackTrace();
            }
      }
 
       /**
       * 3D饼状图
       */
       public void createPieChart3D() {
            DefaultPieDataset dataset = new DefaultPieDataset();
            dataset.setValue( "苹果" , 250);
            dataset.setValue( "桔子" , 350);
            dataset.setValue( "梨子" , 200);
            dataset.setValue( "香蕉" , 50);
            dataset.setValue( "荔枝" , 150);
            JFreeChart chart = ChartFactory. createPieChart3D( "水果产量比率图" , dataset,
                         true true true);
            PiePlot3D plot = (PiePlot3D) chart.getPlot();
             // 设置开始角度
            plot.setStartAngle(150D);
             // 设置方向为"顺时针方向"
            plot.setDirection(Rotation. CLOCKWISE );
             // 设置透明度,0.5F为半透明,1为不透明,0为全透明
            plot.setForegroundAlpha(0.5F);
             // 没有数据的时候显示的内容
            plot.setNoDataMessage( "无数据显示" );
             // 背景色设置
            plot.setBackgroundPaint(ChartColor. WHITE );
             // ChartFrame frame = new ChartFrame("水果产量比率图 ", chart, true);
             // frame.pack();
             // frame.setVisible(true);
 
             try {
                  ChartUtilities. saveChartAsPNG( new File("D:/temp/PieChart3D.png" ),
                              chart, 800, 500);
            } catch (IOException e) {
                  e.printStackTrace();
            }
      }
 
       /**
       * 柱状图
       */
       public void createColumnChart() {
            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, "广州" "荔枝" );
 
            JFreeChart chart = ChartFactory. createBarChart( "水果产量图""水量" "产量" ,
                        dataset, PlotOrientation. VERTICAL true truetrue );
 
            CategoryPlot cp = chart.getCategoryPlot();
            cp.setBackgroundPaint(ChartColor. WHITE ); // 背景色设置
            cp.setRangeGridlinePaint(ChartColor. GRAY ); // 网格线色设置
 
             // ChartFrame frame=new ChartFrame ("水果产量图 ",chart,true);
             // frame.pack();
             // frame.setVisible(true);
 
             try {
                  ChartUtilities. saveChartAsPNG( new File("D:/temp/ColumnChart.png" ),
                              chart, 800, 500);
            } catch (IOException e) {
                  e.printStackTrace();
            }
      }
 
       /**
       * 3D柱状图
       */
       public void createColumnChart3D() {
            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, "广州" "荔枝" );
            JFreeChart chart = ChartFactory. createBarChart3D( "水果产量图""水果" "产量" ,
                        dataset, PlotOrientation. VERTICAL true truetrue );
 
            CategoryPlot cp = chart.getCategoryPlot();
            cp.setBackgroundPaint(ChartColor. WHITE ); // 背景色设置
            cp.setRangeGridlinePaint(ChartColor. GRAY ); // 网格线色设置
 
             // ChartFrame frame=new ChartFrame ("水果产量图 ",chart,true);
             // frame.pack();
             // frame.setVisible(true);
 
             try {
                  ChartUtilities. saveChartAsPNG(
                               new File("D:/temp/ColumnChart3D.png" ), chart, 800, 500);
            } catch (IOException e) {
                  e.printStackTrace();
            }
      }
 
       /**
       * 线状图
       */
       public void createLineChart() {
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            dataset.addValue(100, "北京" "苹果" );
            dataset.addValue(200, "上海" "苹果" );
            dataset.addValue(300, "广州" "苹果" );
            dataset.addValue(400, "北京" "梨子" );
            dataset.addValue(500, "上海" "梨子" );
            dataset.addValue(600, "广州" "梨子" );
            dataset.addValue(700, "北京" "葡萄" );
            dataset.addValue(800, "上海" "葡萄" );
            dataset.addValue(900, "广州" "葡萄" );
            dataset.addValue(800, "北京" "香蕉" );
            dataset.addValue(700, "上海" "香蕉" );
            dataset.addValue(600, "广州" "香蕉" );
            dataset.addValue(500, "北京" "荔枝" );
            dataset.addValue(400, "上海" "荔枝" );
            dataset.addValue(300, "广州" "荔枝" );
            JFreeChart chart = ChartFactory. createLineChart( "水果产量图 ""水果""产量" ,
                        dataset, PlotOrientation. VERTICAL true truetrue );
 
            CategoryPlot cp = chart.getCategoryPlot();
            cp.setBackgroundPaint(ChartColor. WHITE ); // 背景色设置
            cp.setRangeGridlinePaint(ChartColor. GRAY ); // 网格线色设置
 
             // ChartFrame frame=new ChartFrame ("水果产量图 ",chart,true);
             // frame.pack();
             // frame.setVisible(true);
 
             try {
                  ChartUtilities. saveChartAsPNG( new File("D:/temp/LineChart.png" ),
                              chart, 800, 500);
            } catch (IOException e) {
                  e.printStackTrace();
            }
      }
 
       /**
       * 3D线状图
       */
       public void createLineChart3D() {
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            dataset.addValue(300, "北京" "苹果" );
            dataset.addValue(100, "上海" "苹果" );
            dataset.addValue(900, "广州" "苹果" );
            dataset.addValue(200, "北京" "梨子" );
            dataset.addValue(200, "上海" "梨子" );
            dataset.addValue(700, "广州" "梨子" );
            dataset.addValue(300, "北京" "葡萄" );
            dataset.addValue(300, "上海" "葡萄" );
            dataset.addValue(300, "广州" "葡萄" );
            dataset.addValue(400, "北京" "香蕉" );
            dataset.addValue(800, "上海" "香蕉" );
            dataset.addValue(400, "广州" "香蕉" );
            dataset.addValue(100, "北京" "荔枝" );
            dataset.addValue(500, "上海" "荔枝" );
            dataset.addValue(500, "广州" "荔枝" );
            JFreeChart chart = ChartFactory. createLineChart3D( "水果产量图 " "水果" "产量" ,
                        dataset, PlotOrientation. VERTICAL true truetrue );
 
            CategoryPlot cp = chart.getCategoryPlot();
            cp.setBackgroundPaint(ChartColor. WHITE ); // 背景色设置
            cp.setRangeGridlinePaint(ChartColor. GRAY ); // 网格线色设置
 
             // ChartFrame frame=new ChartFrame ("水果产量图 ",chart,true);
             // frame.pack();
             // frame.setVisible(true);
 
             try {
                  ChartUtilities. saveChartAsPNG( new File("D:/temp/LineChart3D.png" ),
                              chart, 800, 500);
            } catch (IOException e) {
                  e.printStackTrace();
            }
      }
}
 
3.代码生成的图表示例

相关文章推荐

JFreeChart C/S和B/S简单例子

使用JFreeChart绘图的基本流程:  1、定义数据源  2、填充数据  3、定义JFreeChart实例  4、设置Chart属性  5、导出到JPG或实例化一个Frame显示  ...

ChartDirector 官方的例子,加上了我的注释,比jfreechart简单些

package chartdirecttest; import java.awt.*; import java.awt.event.*; import javax.swing.*; import C...

jFreeChart简单例子

  • 2015年07月02日 11:44
  • 3.12MB
  • 下载

JFreeChart使用方法与例子

介绍:     JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。...

jfreechart例子

一、饼图 String[] rowKeys= null;//柱数据 String[] columnKeys=null;//刻度数据 row...

jsp JFreeChart使用心得与例子

一、JFreeChart的介绍与获取 JFreeChart开发包是一个开源的Java图形开发包,它从柱形图,饼形图,到雷达图,蜡烛图等等无所不包,可以在c/s,b/s,甚至是实时环境都能一显身手。 ...

JFreeChart做的两个小例子,分别是柱状图和动态显示JVM内存状况图

在这里主要贴上JFreeChart做的两个小例子,分别是柱状图和动态显示JVM内存状况图。 先说明一下jfreechart的概念,jfreechart工具基本上把一个图形分成了几个逻辑部分:   ...
  • TFFITS
  • TFFITS
  • 2012年04月26日 15:24
  • 3142

JFreeChart例子Demo

  • 2009年07月23日 13:47
  • 2.44MB
  • 下载

JFreeChart API+例子

  • 2010年08月20日 13:08
  • 309KB
  • 下载

JFreeChart的简单应用以及解决中文显示方框的问题

JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得到广...
  • cselmu9
  • cselmu9
  • 2012年10月26日 16:34
  • 4901
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JFreeChart简单小例子
举报原因:
原因补充:

(最多只允许输入30个字)