jfreechart时序图和组合图

 package picture;

import java.awt.*;
import java.io.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

import javax.servlet.http.*;

import org.jfree.chart.*;
import org.jfree.chart.axis.*;
import org.jfree.chart.entity.*;
import org.jfree.chart.plot.*;
import org.jfree.chart.renderer.xy.*;
import org.jfree.data.time.*;


public class TimeManyAxis  implements TimeManyAxisInterface {
 
 private String title;
 private String xtitle;
 private String ytitle1;
 private String ytitle2;
 private int width;
 private int height;
 private Color upBack; //边框色
 private Color downBack;
 private int colorhight;
 private Color backround;
 private String fileName=""; //文件名
 
 
 public TimeManyAxis(String fileName){
  this.fileName=fileName;
  this.title="";
  this.xtitle="";
  this.ytitle1="";
  this.ytitle2="";
  this.width=435;
  this.height=325;
  this.upBack=Color.WHITE;
  this.downBack=Color.WHITE;
  this.colorhight=10;
  this.backround=Color.WHITE;
 }
 
 public TimeManyAxis(String fileName,String title,String Xtitle,
   String Ytitle1,String Ytitle2,int width,int height){
  this.fileName=fileName;
  this.title=title;
  this.xtitle=Xtitle;
  this.ytitle1=Ytitle1;
  this.ytitle2=Ytitle2;
  this.width=width;
  this.height=height;
  this.upBack=Color.WHITE;
  this.downBack=Color.WHITE;
  this.colorhight=10;
  this.backround=Color.WHITE;
 }
 
 public TimeManyAxis(String fileName,String title,String Xtitle,
   String Ytitle1,String Ytitle2,Color backround,int width,int height){
  this.fileName=fileName;
  this.title=title;
  this.xtitle=Xtitle;
  this.ytitle1=Ytitle1;
  this.ytitle2=Ytitle2;
  this.width=width;
  this.height=height;
  this.upBack=Color.WHITE;
  this.downBack=Color.WHITE;
  this.colorhight=10;
  this.backround=backround;
 }
 
 public TimeManyAxis(String fileName,String title,String Xtitle,
   String Ytitle1,String Ytitle2,int width,int height,
   Color upback,Color downback,int colorhight,Color backround){
  this.fileName=fileName;
  this.title=title;
  this.xtitle=Xtitle;
  this.ytitle1=Ytitle1;
  this.ytitle2=Ytitle2;
  this.width=width;
  this.height=height;
  this.upBack=upback;
  this.downBack=downback;
  this.colorhight=colorhight;
  this.backround=backround;
 }
 
 
 
 
/* 
 *//**
  *
  * @param chart
  * @return
  *//*
 public static XYPlot getPlot(JFreeChart chart){
  XYPlot plot=chart.getXYPlot();
  
  return plot;
 }
 
 
 *//**
  * 将附加轴和数据映射在一起
  * @param axis1 加的轴
  * @param plot
  * @param t2
  *//*
 
 public static void mapDatasetToRangeAxis(ValueAxis axis1,XYPlot plot,
   TimeSeriesCollection t2){
   plot.setRangeAxis(1, axis1);
   plot.setDataset(1,t2);
   plot.mapDatasetToRangeAxis(1,1);
 }
 
 *//**
  * 得到指定刻度和轴范围的轴
  * @param rangeAxis
  * @param ytitle2 轴的名称
  * @param d1 轴的最小值
  * @param d2 轴的最大值
  * @param d3 轴的刻度间隔
  * @return 返回指定刻度和轴范围的轴
  *//*
 public static ValueAxis getValueAxis(String ytitle2,double d1,double d2,double d3){
  NumberAxis axis1 = new NumberAxis(ytitle2);
  axis1.setAutoRange(false);//不不使用自动设定范围
  axis1.setRange(d1, d2);
  axis1.setTickUnit(new NumberTickUnit(d3));
  return axis1;
 }
 
 *//**
  * 得到属性默认的轴
  * @param ytitle2
  * @return 轴对象
  *//*
 public static ValueAxis getValueAxis(String ytitle2){
  ValueAxis axis1 = new NumberAxis(ytitle2);
  return axis1;
 }
 
 *//**
  * @param d 柱子之间的距离
  * @param c 柱子的颜色
  * @return 柱形作图器
  *//*
 public static XYBarRenderer getBarRenderer(double d,Color c){
  XYBarRenderer xyBarRender=new XYBarRenderer();
  xyBarRender.setMargin(d);
     xyBarRender.setSeriesPaint(0, c);
  return xyBarRender;
 }
 *//**
  * @return 返回线型作图器
  *//*
 public static XYLineAndShapeRenderer getLineRenderer(){
  XYLineAndShapeRenderer render=new XYLineAndShapeRenderer();

  return render;
 }
 *//**
  * @param renderer 做图器
  * @param plot
  *//*
 
 public static void setRenderer(XYItemRenderer renderer,XYPlot plot){
  plot.setRenderer(1,renderer);
 }
 *//**
  * @param t1 数据集
  * @param title 图片的名称
  * @param xtitle x轴的名称
  * @param ytitle1 y轴的名称
  * @return
  *//*
 public static  JFreeChart getChart(TimeSeriesCollection t1,
   String title,String xtitle,String ytitle1){
  JFreeChart chart = ChartFactory.createTimeSeriesChart
  (title, xtitle, ytitle1, t1,
    true,//是否显示图例
    true,//是否显示数据
    false//是否设置url
    );
  return chart;
 }
 *//**设置图片边框的颜色
  * @param chart
  * @param c1 边框上边颜色
  * @param c2 边框下边颜色
  * @param hight 边框下边颜色显示的高度
  *//*
 public static void setBackgroundPaint(JFreeChart chart,Color c1,Color c2,int hight){
  GradientPaint chartGP = new GradientPaint(0, 0, c1, 0, hight,
    c2, false);
  chart.setBackgroundPaint(chartGP);
 }
 *//**
  * 设置图片背景颜色
  * @param plot
  * @param c
  *//*
 public static void setBackgroundPaint(XYPlot plot,Color c){
  plot.setBackgroundPaint(c);
 }
 
*/

 /**
  * @param format 轴的时间显示格式
  * @param datetickunit DateTickUnit的静态属性 年0 月1 日2 时3 分4 秒5 毫秒6
  * @param length 时间显示的宽度 默认为1
  * @return 时间轴
  */
 public  DateAxis getDomainAxis(String format,int datetickunit,int length){
  DateAxis domainAxis = new DateAxis(xtitle);
  DateFormat dateFormat = new SimpleDateFormat(format);
  DateTickUnit unit = new DateTickUnit(datetickunit, length, dateFormat);
  domainAxis.setTickUnit(unit);
  return domainAxis;
 }
 
 /**
  * @param format 轴的时间显示格式
  * @param datetickunit DateTickUnit的静态属性 年0 月1 日2 时3 分4 秒5 毫秒6
  * @return 时间轴
  */
 public  DateAxis getDomainAxis(String format,int datetickunit){
  DateAxis domainAxis = new DateAxis(xtitle);
  DateFormat dateFormat = new SimpleDateFormat(format);
  DateTickUnit unit = new DateTickUnit(datetickunit, 1, dateFormat);
  domainAxis.setTickUnit(unit);
  return domainAxis;
 }
 
 /**
  * @param t1 数据集1
  * @param t2 数据集2
  * @param c 柱子的颜色
  * @param d1 轴的最小值
  * @param d2 轴的最大值
  * @param d3 轴的刻度间隔
  * @param distance 柱子之间的距离 默认为0.4
  * @param domainAxis 设置的横轴 默认为null
  * @param request
  * @return 返回文件路径 graphURL
  */
 public   String  draw(TimeSeriesCollection t1,TimeSeriesCollection t2,
   Color c,double d1,double d2,double d3,double distance,DateAxis domainAxis,
   HttpServletRequest request){
  //HttpSession session=request.getSession(true);
  JFreeChart chart = ChartFactory.createTimeSeriesChart
  (title, xtitle, ytitle1, t1,
    true,//是否显示图例
    true,//是否显示数据
    false//是否设置url
    );
  //设置图片边框颜色
  GradientPaint chartGP = new GradientPaint(0, 0, upBack, 0, colorhight,
    downBack, false);
  chart.setBackgroundPaint(chartGP);
  
  XYPlot plot=chart.getXYPlot();
  //设置图片背景颜色
  plot.setBackgroundPaint(backround);

  //设置横轴显示格式
  if(domainAxis!=null){
   plot.setDomainAxis(domainAxis);
  }
  //设置纵轴
  NumberAxis axis1;
  if(d1==0&&d2==0&&d3==0){
   axis1 = new NumberAxis(ytitle2);
  }else{
   axis1 = new NumberAxis(ytitle2);
   axis1.setAutoRange(false);//不不使用自动设定范围
   axis1.setRange(d1, d2);
   axis1.setTickUnit(new NumberTickUnit(d3));
  }
   //将数据和附加轴影射在一起
   plot.setRangeAxis(1, axis1);
   plot.setDataset(1,t2);
   plot.mapDatasetToRangeAxis(1,1);
   //得到柱形作图器
   XYBarRenderer xyBarRender=new XYBarRenderer();
   //设置柱形之间的距离,柱子的颜色
   xyBarRender.setMargin(distance);
      xyBarRender.setSeriesPaint(0, c);
   plot.setRenderer(1,xyBarRender);
  
  /* String graphURL = "";
   try {
    graphURL = ChartServlet.saveChartAsPNG(chart, width, height,
      request,fileName);
    System.out.println("fileName = "+graphURL);
   } catch (IOException e) {
    System.out.println("------ 在绘制图片时抛出异常,内容如下:");
    e.printStackTrace();
   }*/
   
   //固定用法
   /*ChartRenderingInfo info = new ChartRenderingInfo(
     new StandardEntityCollection());
   // 生成指定格式的图片,并返回图片名称
   String fileName = "";
   try {
    fileName = ChartServlet.saveChartAsPNG(chart, width, height,
      info, session,request);
   } catch (IOException e) {
    System.out.println("------ 在绘制图片时抛出异常,内容如下:");
    e.printStackTrace();
   }
   // 组织图片浏览路径
   String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileName;
   return graphURL;*/
   ChartFrame frame = new ChartFrame("中国联通股票", chart);
         frame.pack();
         frame.setVisible(true);
         return "s";
   //return graphURL;
 }
 
 /**
  * @param t1
  * @param t2
  * @param c
  * @param d1
  * @param d2
  * @param d3
  * @param domainAxis
  * @param request
  * @return URL
  */
 public   String  draw(TimeSeriesCollection t1,TimeSeriesCollection t2,
   Color c,double d1,double d2,double d3,DateAxis domainAxis,HttpServletRequest request){
  return draw( t1, t2,c,d1,d2,d3,0.4,domainAxis,request);
 }
 
 /**
  * @param t1
  * @param t2
  * @param c
  * @param distance
  * @param domainAxis
  * @param request
  * @return URL
  */
 public   String  draw(TimeSeriesCollection t1,TimeSeriesCollection t2,
   Color c,double distance,DateAxis domainAxis,HttpServletRequest request){
  return draw( t1, t2,c,0,0,0,distance,domainAxis,request);
 }
 
 /**
  * @param t1
  * @param t2
  * @param c
  * @param domainAxis
  * @param request
  * @return URL
  */
 public   String  draw(TimeSeriesCollection t1,TimeSeriesCollection t2,
   Color c,DateAxis domainAxis,HttpServletRequest request){
  return draw( t1, t2,c,0,0,0,0.4,domainAxis,request);
 }
 
 /**
  * @param t1
  * @param t2
  * @param c
  * @param d1
  * @param d2
  * @param d3
  * @param distance
  * @param request
  * @return URL
  */
 public String draw(TimeSeriesCollection t1, TimeSeriesCollection t2, Color c,
   double d1, double d2, double d3, double distance, HttpServletRequest request) {
  
  return draw( t1, t2,c, d1, d2, d3, distance,null, request);
 }
 
 /**
  * @param t1
  * @param t2
  * @param c
  * @param d1
  * @param d2
  * @param d3
  * @param request
  * @return URL
  */
 public   String  draw(TimeSeriesCollection t1,TimeSeriesCollection t2,
   Color c,double d1,double d2,double d3,HttpServletRequest request){
  return draw( t1, t2,c,d1,d2,d3,0.4,null,request);
 }
 
 /**
  * @param t1
  * @param t2
  * @param c
  * @param distance
  * @param request
  * @return URL
  */
 public   String  draw(TimeSeriesCollection t1,TimeSeriesCollection t2,
   Color c,double distance,HttpServletRequest request){
  return draw( t1, t2,c,0,0,0,distance,null,request);
 }
 
 /**
  * @param t1
  * @param t2
  * @param c
  * @param request
  * @return URL
  */
 public   String  draw(TimeSeriesCollection t1,TimeSeriesCollection t2,
   Color c,HttpServletRequest request){
  return draw( t1, t2,c,0,0,0,0.4,null,request);
 }
 
 
 /**
  * @param t1 数据集1
  * @param t2 数据集2
  * @param c 区线组的颜色
  * @param d1 轴的最小值
  * @param d2 轴的最大值
  * @param d3 轴的刻度间隔
  * @param request
  * @return 返回文件路径 graphURL
  */
 public   String  drawLine(TimeSeriesCollection t1,TimeSeriesCollection t2,
   Color[] c,double d1,double d2,double d3,DateAxis domainAxis,HttpServletRequest request){
  //HttpSession session=request.getSession(true);
  JFreeChart chart = ChartFactory.createTimeSeriesChart
  (title, xtitle, ytitle1, t1,
    true,//是否显示图例
    true,//是否显示数据
    false//是否设置url
    );
  
  GradientPaint chartGP = new GradientPaint(0, 0, upBack, 0, colorhight,
    downBack, false);
  chart.setBackgroundPaint(chartGP);
  
  XYPlot plot=chart.getXYPlot();
  plot.setBackgroundPaint(backround);
  
  
  if(domainAxis!=null){
   plot.setDomainAxis(domainAxis);
  }

  NumberAxis axis1;
  if(d1==0&&d2==0&&d3==0){
   axis1 = new NumberAxis(ytitle2);
  }else{
   axis1 = new NumberAxis(ytitle2);
   axis1.setAutoRange(false);//不不使用自动设定范围
   axis1.setRange(d1, d2);
   axis1.setTickUnit(new NumberTickUnit(d3));
  }
  
   plot.setRangeAxis(1, axis1);
   plot.setDataset(1,t2);
   plot.mapDatasetToRangeAxis(1,1);
   XYLineAndShapeRenderer xyBarRender=new XYLineAndShapeRenderer();
  for(int i=0;i<(c.length);i++){
      xyBarRender.setSeriesPaint(i, c[i]);
   }
     
   plot.setRenderer(1,xyBarRender);
  
   String graphURL = "";
   try {
    graphURL = ChartServlet.saveChartAsPNG(chart, width, height,
      request,fileName);
    System.out.println("fileName = "+graphURL);
   } catch (IOException e) {
    System.out.println("------ 在绘制图片时抛出异常,内容如下:");
    e.printStackTrace();
   }
   return graphURL;
  
   //固定用法
   /*ChartRenderingInfo info = new ChartRenderingInfo(
     new StandardEntityCollection());
   // 生成指定格式的图片,并返回图片名称
   String fileName = "";
   try {
    fileName = ChartServlet.saveChartAsPNG(chart, width, height,
      info, session,request);
   } catch (IOException e) {
    System.out.println("------ 在绘制图片时抛出异常,内容如下:");
    e.printStackTrace();
   }
   // 组织图片浏览路径
   String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileName;
   return graphURL;*/
   
   /*ChartFrame frame = new ChartFrame("中国联通股票", chart);
         frame.pack();
         frame.setVisible(true);
         return "s";*/
 }
 
 public   String  drawLine(TimeSeriesCollection t1,TimeSeriesCollection t2,
   Color[] c,DateAxis domainAxis,HttpServletRequest request){
  return drawLine( t1, t2,c,0,0,0,domainAxis,request);
 }
 
 public   String  drawLine(TimeSeriesCollection t1,TimeSeriesCollection t2,
   Color[] c,double d1,double d2,double d3,HttpServletRequest request){
  return drawLine( t1, t2,c,d1,d2,d3,null,request);
 }
 
 public   String  drawLine(TimeSeriesCollection t1,TimeSeriesCollection t2,
   Color[] c,HttpServletRequest request){
  return drawLine( t1, t2,c,0,0,0,null,request);
 }
 
 
 public static void main(String[] args) {
   TimeSeriesCollection ts2=new TimeSeriesCollection();
   TimeSeries series2=new TimeSeries("股票");//对应时间成交量数据
       series2.add(new Day(18,8,2008), 119701900/100);
       series2.add(new Day(19,8,2008), 109719000/100);
       series2.add(new Day(20,8,2008), 178492400/100);
       series2.add(new Day(21,8,2008), 269978500/100);
       series2.add(new Day(22,8,2008), 261042300/100);
      
     /*  TimeSeries series=new TimeSeries("rrr");//对应时间成交量数据
       series.add(new Day(18,8,2008), 219701900/100);
       series.add(new Day(19,8,2008), 309719000/100);
       series.add(new Day(20,8,2008), 178492400/100);
       series.add(new Day(21,8,2008), 369978500/100);
       series.add(new Day(22,8,2008), 151042300/100);
       ts2.addSeries(series);*/
       ts2.addSeries(series2);

   TimeSeriesCollection ts1=new TimeSeriesCollection();
   TimeSeries time1=new TimeSeries("abbbb");
   time1.addOrUpdate(new Day(18,8,2008),2.0);
   time1.addOrUpdate(new Day(19,8,2008),4.2);
   time1.addOrUpdate(new Day(20,8,2008),9.0);
   time1.addOrUpdate(new Day(21,8,2008),6.0);
   time1.addOrUpdate(new Day(22,8,2008),3.0);
   TimeSeries time2=new TimeSeries("baaa");
   time2.add(new Day(18,8,2008),8.0);
   time2.add(new Day(19,8,2008),4.0);
   time2.add(new Day(20,8,2008),2.0);
   time2.add(new Day(21,8,2008),7.0);
   time2.add(new Day(22,8,2008),6.0);
   ts1.addSeries(time1);
   ts1.addSeries(time2);
   TimeManyAxis t=new TimeManyAxis("jfreechart","abc","a","b","c",300,200);
   HttpServletRequest request=null;
   Color[] c=new Color[]{Color.CYAN,Color.YELLOW};
   DateAxis axis=t.getDomainAxis("MM-dd",2,1);
   t.draw(ts1,ts2,Color.YELLOW,0,0,0,axis,request);
   
  
 }

 
 

}
 
 
 
 
 
 
 
 
 
 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值