JFreeChart 的一些解释

以下为代码:

package org.tie;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.RenderingHints;
import java.io.FileOutputStream;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.CategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

/**
*
* 包名:org.tie<br>
*
* 类名:TestJFreeChart.java<br>
*
* 类概要:测试JFreeChart<br>
*
* @author:TIE
*
* @version:1.0
*
* 作成日:2007/07/13<br>
*
*/
public class TestJFreeChart {
/**
*
* 包名:org.tie<br>
*
* 类名:LabelGenerator.java<br>
*
* 类概要:设置柱状体顶端的数据显示<br>
*
* @author:TIE
*
* @version:1.0
*
* 作成日:2007/07/13<br>
*
*/
static class LabelGenerator implements CategoryItemLabelGenerator {

        private double threshold;

        public LabelGenerator(double threshold) {
         this.threshold = threshold;
        }

        public String generateLabel(CategoryDataset dataset, int row, int column) {
         String result = null;
         final Number value = dataset.getValue(row, column);
         if (value != null) {
          final double v = value.doubleValue();
          if (v > this.threshold) {
           result = value.toString();
          }
         }
         return result;
        }

        public String generateRowLabel(CategoryDataset dataset, int row) {
         return null;

        }

        public String generateColumnLabel(CategoryDataset dataset, int column) {
         return null;
        }

}

          /**
           * 方法名:createDataset<br>
           *
           * 方法概要:创建数据集合<br>
           *
           * @param void
           *
           * @return void
           *
           * 作成日:2007/07/13
           */
private static CategoryDataset createDataset() {
        String s1 = "苹果";
        String s2 = "桔子";
        String s3 = "鸭梨";
        String s4 = "香蕉";

        String c1 = "北京";
        String c2 = "上海";
        String c3 = "大连";
        String c4 = "青岛";
        String c5 = "哈尔滨";

        /*-------------封装图表使用的数据集-------------*/
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.setValue(1.0, s1, c1);
        dataset.setValue(2.0, s1, c2);
        dataset.setValue(3.0, s1, c3);
        dataset.setValue(4.0, s1, c4);
        dataset.setValue(5.0, s1, c5);

        dataset.setValue(5.0, s2, c1);
        dataset.setValue(4.0, s2, c2);
        dataset.setValue(3.0, s2, c3);
        dataset.setValue(2.0, s2, c4);
        dataset.setValue(1.0, s2, c5);

        dataset.setValue(1.0, s3, c1);
        dataset.setValue(2.0, s3, c2);
        dataset.setValue(3.0, s3, c3);
        dataset.setValue(2.0, s3, c4);
        dataset.setValue(1.0, s3, c5);

        dataset.setValue(1.0, s4, c1);
        dataset.setValue(2.0, s4, c2);
        dataset.setValue(3.0, s4, c3);
        dataset.setValue(4.0, s4, c4);
        dataset.setValue(5.0, s4, c5);

        return dataset;
}

          /**
           * 方法名:main<br>
           *
           * 方法概要:入口方法<br>
           *
           * @param String args[]
           *
           * @return void
           *
           * 作成日:2007/07/13
           */
public static void main(String args[]) {
        // 数据集合
        CategoryDataset dataset = createDataset();
  
        // 图表
        JFreeChart chart = ChartFactory.createBarChart(
                   "图表标题",                // 图表标题
                   "X轴标题",                // X轴标题
                   "Y轴标题",                // Y轴标题
                   dataset,            // 数据集合              
                   PlotOrientation.VERTICAL,         // 图表显示方向(水平、垂直)
                   true,                  // 是否使用图例             
                   true,                  // 是否使用工具提示             
                   false                  // 是否为图表增加URL            
               );
        // 设置图表属性
        // 设置整个图表背景颜色
        chart.setBackgroundPaint(Color.GRAY);
  
        // 取得CategoryPlot,设定Plot参数
        CategoryPlot plot = chart.getCategoryPlot();
        // 设置图表的显示部分的背景色
        plot.setBackgroundPaint(Color.PINK);
        // 设置垂直网格线颜色
        plot.setDomainGridlinePaint(Color.black);
        // 设置是否显示垂直网格线
        plot.setDomainGridlinesVisible(true);
        // 设置水平网格线颜色
        plot.setRangeGridlinePaint(Color.yellow);
        // 设置是否显示水平网格线
        plot.setRangeGridlinesVisible(true);

        // 取得NumberAxis,将数据转换为整数形式
        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

        // 设置是否在柱状图的状态条上显示边框
        BarRenderer render = (BarRenderer) plot.getRenderer();
        render.setItemMargin(0.1);

        // 设置柱状图的渐变色
        CategoryItemRenderer renderer = (CategoryItemRenderer) plot.getRenderer();
        GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, new Color(255,
          200, 80), 0.0f, 0.0f, new Color(255, 255, 40));
        GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, new Color(50,
          255, 50), 0.0f, 0.0f, new Color(100, 255, 100));
        GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f,
          0.0f, new Color(255, 100, 100));
        GradientPaint gp3 = new GradientPaint(0.0f, 0.0f, new Color(108,
          108, 255), 0.0f, 0.0f, new Color(150, 150, 200));

        renderer.setSeriesPaint(0, gp0);
        renderer.setSeriesPaint(1, gp1);
        renderer.setSeriesPaint(2, gp2);
        renderer.setSeriesPaint(3, gp3);

        //设置X轴标题的倾斜程度
        CategoryAxis domainAxis = plot.getDomainAxis();
        domainAxis.setCategoryLabelPositions(CategoryLabelPositions
          .createUpRotationLabelPositions(1.57));
  
        // 设置柱状体与图片边框的左右间距
        domainAxis.setLowerMargin(0.01);
        domainAxis.setUpperMargin(0.01);

        // 设置柱状体与图片边框的上下间距
        ValueAxis rAxis = plot.getRangeAxis();
        rAxis.setUpperMargin(0.15);
        rAxis.setLowerMargin(0.15);

        // 设置每一组柱状体之间的间隔
        render.setItemMargin(0.0);
  
        // 设置消除字体的锯齿渲染(解决中文问题)
        chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
          RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
        // 设置标题字体
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("黑体", Font.PLAIN, 20));
        // 设置X轴坐标上的文字
        domainAxis.setTickLabelFont(new Font("黑体", Font.PLAIN, 11));
        // 设置X轴的标题文字
        domainAxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));
        // 设置Y轴坐标上的文字
        rAxis.setTickLabelFont(new Font("黑体", Font.PLAIN, 12));
        // 设置Y轴的标题文字
        rAxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));

        // 设置柱状体上的显示的字体
        renderer.setItemLabelGenerator(new LabelGenerator(0.0));
        renderer.setItemLabelFont(new Font("黑体", Font.PLAIN, 12));
        renderer.setItemLabelsVisible(true);

        // 向磁盘输出图片文件
          FileOutputStream fos = null;
           try {
            fos = new FileOutputStream("d:/aaa.png");
            ChartUtilities.writeChartAsPNG(fos,chart,640,390);
           } catch (IOException e) {
               e.printStackTrace();
              }finally{
               try {
                fos.close();
         } catch (IOException e) {
          e.printStackTrace();
         }
              }   
              System.out.println("ok!!!");
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值