`
e3002
  • 浏览: 79174 次
社区版块
存档分类
最新评论

jfreechart双轴图

阅读更多

package com.javaeye.e3002;

import java.awt.Color;
import java.awt.GradientPaint;
import java.io.FileNotFoundException;
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.plot.CategoryPlot;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;

/**
 * 日期 2007-4-20
 * @author xuquanxing
 */
public class mixChart extends ApplicationFrame
{

 public mixChart(String arg0)
 {
  super(arg0);
/*        ChartPanel chartpanel = new ChartPanel(createChart());
        chartpanel.setPreferredSize(new Dimension(500, 270));
        setContentPane(chartpanel);*/
 }

 /**
  *
  */
 private static final long serialVersionUID = 1L;

 /**
  * 日期 2007-4-18
  * @author xuquanxing
  * @param args void
  */
 public static void main(String[] args)
 {
        JFreeChart  freechat =createChart();
  FileOutputStream fos_jpg = null;
  try
  {
   try
   {
    fos_jpg = new FileOutputStream("D:\\bar.jpg");
    ChartUtilities.writeChartAsJPEG(fos_jpg, 1, freechat, 400, 400, null);
   } catch (FileNotFoundException e)
   {
    e.printStackTrace();
   } catch (IOException e)
   {
    e.printStackTrace();
   }
  } finally
  {
   try
   {
    fos_jpg.close();
   } catch (Exception e)
   {
   }
  }
 }
 
 public static JFreeChart createChart()
 {
  //创建数据集
  CategoryDataset categorydataset  = createDataset1();
       //创建数据集1
        CategoryDataset categorydataset1 = createDataset2();
     
        JFreeChart jfreechart = ChartFactory.createBarChart3D(
                                                        "kpi",
                                                           "index",
                                                           "concrete",
                                                           categorydataset1,
                                                           PlotOrientation.VERTICAL,
                                                           true,
                                                           true,
                                                           false
                                                           );
      
        //设置图片背景色
        GradientPaint bgGP = new GradientPaint(0, 1000, Color.cyan, 0, 0,
             Color.WHITE, false);
        jfreechart.setBackgroundPaint(bgGP);
       
        CategoryPlot categoryplot3 = (CategoryPlot) jfreechart.getPlot();
  //      NumberAxis numberaxisbar = (NumberAxis) categoryplot3.getRangeAxis();
//      设置最高的一个 Item 与图片顶端的距离
 //       numberaxisbar.setUpperBound(0.15);
 //       numberaxisbar.setLowerMargin(1000.00);
  //      categoryplot3.setRangeAxis(numberaxisbar);
        //System.out.println("categoryplot3.getRangeAxis()"+categoryplot3.getRangeAxis(0).getRange().getLength());
      
        CategoryAxis categoryaxis = categoryplot3.getDomainAxis();
       // CategoryLabelPositions.DOWN_45 表示label样式 倾斜角度
        categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);
        //设置标签宽度
        categoryaxis.setMaximumCategoryLabelWidthRatio(20F);
       
        NumberAxis numberaxis3 = new NumberAxis("value");
        categoryplot3.setRangeAxis(1, numberaxis3);
        categoryplot3.setDataset(1, categorydataset);//设置数据集索引
        categoryplot3.mapDatasetToRangeAxis(1,1);//将该索引映射到axis 第一个参数指数据集的索引,第二个参数为坐标轴的索引
        LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer();
        lineandshaperenderer.setShapesVisible(true);
       
        //设置某坐标轴索引上数据集的显示样式
        categoryplot3.setRenderer(1, lineandshaperenderer);
        //设置两个图的前后顺序 ,DatasetRenderingOrder.FORWARD表示后面的图在前者上面 ,DatasetRenderingOrder.REVERSE表示 表示后面的图在前者后面
        categoryplot3.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
        return jfreechart;
 }
 
  /**
  * 日期 2007-4-20
  * @author xuquanxing
  * @return CategoryDataset  折线的数据集
  */
 public static CategoryDataset createDataset1()
     {
         DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
         //改成具体指标
         String s  = "First";
         String s1 = "Second";
         //改为对应的时间
         String s2 = "Type 1";
         String s3 = "Type 2";
         String s4 = "Type 3";
         String s5 = "Type 4";
         String s6 = "Type 5";
         String s7 = "Type 6";
         String s8 = "Type 7";
         String s9 = "Type 8";
         defaultcategorydataset.addValue(1.0D, s,s2);
         defaultcategorydataset.addValue(4D, s, s3);
         defaultcategorydataset.addValue(3D, s, s4);
         defaultcategorydataset.addValue(5D, s, s5);
         defaultcategorydataset.addValue(5D, s, s6);
         defaultcategorydataset.addValue(7D, s, s7);
         defaultcategorydataset.addValue(7D, s, s8);
         defaultcategorydataset.addValue(8D, s, s9);
         //分别给每个指标 赋值
         defaultcategorydataset.addValue(5D, s1, s2);
         defaultcategorydataset.addValue(7D, s1, s3);
         defaultcategorydataset.addValue(6D, s1, s4);
         defaultcategorydataset.addValue(8D, s1, s5);
         defaultcategorydataset.addValue(4D, s1, s6);
         defaultcategorydataset.addValue(4D, s1, s7);
         defaultcategorydataset.addValue(2D, s1, s8);
         defaultcategorydataset.addValue(1.0D, s1, s9);
         return defaultcategorydataset;
     }
 
  /**
  * 日期 2007-4-20
  * @author xuquanxing
  * @return CategoryDataset 柱状数据集
  */
 public static CategoryDataset createDataset2()
     {
         DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
         //改成具体指标
         String s  = "Thrid";
         String s1 = "Fourth";
         //改为对应的时间
         String s2 = "Type 1";
         String s3 = "Type 2";
         String s4 = "Type 3";
         String s5 = "Type 4";
         String s6 = "Type 5";
         String s7 = "Type 6";
         String s8 = "Type 7";
         String s9 = "Type 8";
         defaultcategorydataset.addValue(11D, s, s2);
         defaultcategorydataset.addValue(14D, s, s3);
         defaultcategorydataset.addValue(13D, s, s4);
         defaultcategorydataset.addValue(15D, s, s5);
         defaultcategorydataset.addValue(15D, s, s6);
         defaultcategorydataset.addValue(17D, s, s7);
         defaultcategorydataset.addValue(17D, s, s8);
         defaultcategorydataset.addValue(18D, s, s9);
         defaultcategorydataset.addValue(15D, s1, s2);
         defaultcategorydataset.addValue(17D, s1, s3);
         defaultcategorydataset.addValue(16D, s1, s4);
         defaultcategorydataset.addValue(18D, s1, s5);
         defaultcategorydataset.addValue(14D, s1, s6);
         defaultcategorydataset.addValue(14D, s1, s7);
         defaultcategorydataset.addValue(12D, s1, s8);
         defaultcategorydataset.addValue(11D, s1, s9);
         return defaultcategorydataset;
     }
}
 

双轴图网上例子很少,jfreecahrt自带的例子也不是这样的,弄了半天才成这样,可以直接运行,看下效果!

目前还有点疑问的是,jfree生成的图片会位于tomcat的temp文件夹下,不知该如何指定文件名

还有图片的热点问题,定位很不准确! 待续!

分享到:
评论

相关推荐

    jfreechart示例图片

    jfreechart示例图片dfsdfdsfdsfffffffffffffffffffffffdsfsdf

    JFreeChart基础入门及实例

    JFreeChart可以满足大部分图片创建的需求,实例中主要介绍饼图的做法。

    使用jfreechart显示图片,具体的

    本教程将详细讲解如何在Struts2框架中使用JFreeChart来显示图片。 首先,我们需要了解JFreeChart的基本用法。JFreeChart提供了丰富的API,可以方便地创建和定制图表。以下是一般步骤: 1. **创建图表对象**:例如...

    JfreeChart-雷达图与导出

    JFreeChart是一款强大的Java图表库,它允许开发者在Java应用程序或网页中创建多种类型的图表,包括雷达图(也称为蜘蛛网图)。本篇将深入探讨如何利用JFreeChart生成雷达图以及相关的数据导出功能。 **雷达图的使用...

    jfreechart雷达图

    在本篇中,我们将深入探讨如何利用JFreeChart来制作雷达图(也称为蜘蛛图或星形图),并理解其相关知识点。 1. **JFreeChart简介** JFreeChart是一个开源项目,其目标是提供一个可以免费使用的高质量图表API。它...

    jfreechart生成图片及导出pdf 、excel

    JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件或Web应用中创建各种图表,如柱状图、饼图、折线图等。这个库支持丰富的定制选项,使得图表可以按照用户需求进行个性化设计。在这个...

    jfreechart绘制的风速风向玫瑰图

    jfreechart绘制的风速风向玫瑰图 jfreechart是Java中一个流行的图表库,它提供了许多种类的图表,包括柱状图、折线图、饼图、雷达图等。本文主要介绍如何使用jfreechart绘制风速风向玫瑰图。 首先,了解jfreechart...

    JFreeChart生成图片并显示

    《JFreeChart生成图片并显示》 在Java开发中,我们常常需要生成各种图表来直观地展示数据,比如折线图、柱状图、饼图等。JFreeChart是一个强大的开源Java库,它提供了丰富的图表生成功能,可以满足开发者在各种应用...

    jfreechart 堆栈柱状图跟折线图结合拼接

    jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707

    JFreeChart画雷达图

    JFreeChart是一款强大的Java图形库,它允许开发者创建各种复杂的图表,包括我们这里关注的雷达图(也称为蜘蛛网图)。雷达图是一种多轴图表,常用于比较多个变量在同一尺度上的表现,或者展示数据在多个维度上的分布...

    用JFreeChart写的雷达图实例

    在Java编程环境中,JFreeChart是一个非常流行的库,用于创建各种复杂的图表,包括线图、柱状图、饼图以及我们的焦点——雷达图。本文将深入探讨如何利用JFreeChart库来实现一个雷达图实例,这有助于数据可视化,特别...

    JFreeChart柱图

    JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图

    JfreeChart各种图形案例

    **JFreeChart是一种广泛使用的Java库,用于创建各种高质量的2D图表,如折线图、柱状图、饼图、散点图等。在"JfreeChart各种图形案例"这个资源中,包含了多种JFreeChart图形的示例,旨在帮助开发者直观地理解如何在...

    JFreeChart混合图表演示

    JFreeChart是一款强大的Java库,用于创建各种类型的图表,包括柱状图、饼图、线图、散点图等。在“JFreeChart混合图表演示”中,我们重点探讨如何利用JFreeChart来创建一个包含多种图表类型的混合图表,以提供更丰富...

    jfreechart 漂亮的折线图

    利用jfreechart绘制的漂亮的折线图,实现双纵坐标,折线点标签还带箭头指示,非常直观,需要提前下载jfreechart.jar文件,否则我的类会报错,也即是要配置运行环境

    JFreeChart画图 饼状图 单组柱状图 多组柱状图 堆积柱状图 折线图

    JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...

Global site tag (gtag.js) - Google Analytics