⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crosshairdemo2.java

📁 整合后的JFREECHART例子,整合后的JFREECHART例子
💻 JAVA
字号:
package com.hollysys.gtjhgyj.chart;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspWriter;
import javax.swing.ImageIcon;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.DateTickUnit;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.IntervalMarker;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.Layer;
import org.jfree.ui.RectangleAnchor;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.TextAnchor;

public class CrosshairDemo2

{
	 static Class class$org$jfree$data$time$Year; /* synthetic field */
	 static Class class$org$jfree$data$time$Month; /* synthetic field */

        public XYDataset createDataset()
        {
        	
        	TimeSeries xyseries = new TimeSeries("财政收入",Month.class);
            xyseries.add(new Month(1,2007), 1.0D);
            xyseries.add(new Month(2,2007), 4D);
            xyseries.add(new Month(3,2007), 3D);
            xyseries.add(new Month(4,2007), 5D);
            xyseries.add(new Month(5,2007), 5D);
            xyseries.add(new Month(6,2007), 7D);
            xyseries.add(new Month(7,2007), 7D);
            xyseries.add(new Month(8,2007), 8D);

            
            TimeSeries xyseries1 = new TimeSeries("平均增长率",Month.class);
            xyseries1.add(new Month(1,2007), 3.0D);
            xyseries1.add(new Month(2,2007), 4.9D);
            xyseries1.add(new Month(3,2007), 3.5D);
            xyseries1.add(new Month(4,2007), 4.5D);
            xyseries1.add(new Month(5,2007), 5.5D);
            xyseries1.add(new Month(6,2007), 7D);
            xyseries1.add(new Month(7,2007), 7.9D);
            xyseries1.add(new Month(8,2007), 1.8D);

            TimeSeries xyseries2 = new TimeSeries("增加率",Month.class);
            xyseries2.add(new Month(1,2007), 4.0D);
            xyseries2.add(new Month(2,2007), 6.4D);
            xyseries2.add(new Month(3,2007), 3.8D);
            xyseries2.add(new Month(4,2007), 5.9D);
            xyseries2.add(new Month(5,2007), 8.2D);
            xyseries2.add(new Month(6,2007), 4.2D);
            xyseries2.add(new Month(7,2007), 9.7D);
            xyseries2.add(new Month(8,2007), 5.6D);

            TimeSeriesCollection xyseriescollection = new TimeSeriesCollection(); //再用XYSeriesCollection添加入XYSeries 对象
            xyseriescollection.addSeries(xyseries);
            xyseriescollection.addSeries(xyseries1);
            xyseriescollection.addSeries(xyseries2);
            return xyseriescollection;

        }



        public JFreeChart createChart(XYDataset xydataset)
        {
           // JFreeChart jfreechart = ChartFactory.createXYSeriesChart("时序图", "时间", "对应值", xydataset, true, true, false);
            //JFreeChart jfreechart = ChartFactory.createXYLineChart("Example","纵坐标","横坐标",xydataset,PlotOrientation.VERTICAL,true,true,false);
            JFreeChart jfreechart = ChartFactory.createTimeSeriesChart("Example","纵坐标","横坐标",xydataset,true,true,false);
            jfreechart.setBackgroundPaint(Color.white);
           
            ImageIcon ii = new ImageIcon("c:\\Image00000.jpg");//背景图片
            Image img = ii.getImage();
            
            XYPlot xyplot = jfreechart.getXYPlot();
            xyplot.setBackgroundPaint(Color.white);//设置背景着色
            //xyplot.getRangeAxis().setVisible(false);//使纵轴不可见
            //xyplot.setDomainGridlinePaint(Color.white); //网格线纵向颜色,如果注销,将不生成网格线
            xyplot.setRangeGridlinePaint(Color.black); //网格线横向颜色,如果注销,将不生成网格线
            xyplot.setDomainGridlinesVisible(false);//网格线纵向不可见
            xyplot.setRangeGridlinesVisible(true);//网格线横向不可见
            xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));
            xyplot.setDomainCrosshairVisible(true);
            xyplot.setDomainCrosshairLockedOnData(false);
            xyplot.setRangeCrosshairVisible(false);
            //xyplot.setBackgroundImage(img);
            xyplot.setBackgroundImageAlpha(1.0f);
            XYItemRenderer xyitemrenderer = xyplot.getRenderer();
            //xyitemrenderer.setPaint(Color.black);//设置所有曲线的着色
            xyitemrenderer.setSeriesPaint(0, Color.black);//设置第一条曲线的着色
            xyitemrenderer.setSeriesPaint(1, Color.red);//设置第二条曲线的着色
            //将第二条线设置为虚线
            xyitemrenderer.setSeriesStroke(1, new BasicStroke(1.0F, 1, 1, 1.0F, new float[] {
5F, 3F
}, 0.0F));
            
            /**
             * 单独设置曲线着色
             
            xyitemrenderer.setSeriesPaint(0, Color.black);
            xyitemrenderer.setSeriesPaint(1, Color.red);
            xyitemrenderer.setSeriesPaint(2, Color.black);
            xyitemrenderer.setSeriesPaint(3, Color.black);
            */
            IntervalMarker intervalmarker0 = new IntervalMarker(0D, 2D);
            intervalmarker0.setLabel("青灯区");
            intervalmarker0.setLabelFont(new Font("SansSerif", 2, 11));
            intervalmarker0.setLabelAnchor(RectangleAnchor.LEFT);
            intervalmarker0.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
            intervalmarker0.setPaint(Color.cyan);
            xyplot.addRangeMarker(intervalmarker0, Layer.BACKGROUND);
            
            
            IntervalMarker intervalmarker = new IntervalMarker(2D, 4D);
            intervalmarker.setLabel("黄灯区");
            intervalmarker.setLabelFont(new Font("SansSerif", 2, 11));
            intervalmarker.setLabelAnchor(RectangleAnchor.LEFT);
            intervalmarker.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
            intervalmarker.setPaint(Color.yellow);
            xyplot.addRangeMarker(intervalmarker, Layer.BACKGROUND);
            
            IntervalMarker intervalmarker1 = new IntervalMarker(4D,6D);
            intervalmarker1.setLabel("蓝灯区");
            intervalmarker1.setLabelFont(new Font("SansSerif", 2, 11));
            intervalmarker1.setLabelAnchor(RectangleAnchor.LEFT);
            intervalmarker1.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
            intervalmarker1.setPaint(Color.BLUE);
            xyplot.addRangeMarker(intervalmarker1, Layer.BACKGROUND);
            
            IntervalMarker intervalmarker2 = new IntervalMarker(6D, 8D);
            intervalmarker2.setLabel("绿灯区");
            intervalmarker2.setLabelFont(new Font("SansSerif", 2, 11));
            intervalmarker2.setLabelAnchor(RectangleAnchor.LEFT);
            intervalmarker2.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
            intervalmarker2.setPaint(Color.green);
            xyplot.addRangeMarker(intervalmarker2, Layer.BACKGROUND);
            
            IntervalMarker intervalmarker3 = new IntervalMarker(8D, 10D);
            intervalmarker3.setLabel("红灯区");
            intervalmarker3.setLabelFont(new Font("SansSerif", 2, 11));
            intervalmarker3.setLabelAnchor(RectangleAnchor.LEFT);
            intervalmarker3.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
            intervalmarker3.setPaint(Color.RED);
            xyplot.addRangeMarker(intervalmarker3, Layer.BACKGROUND);
            
            
            
            /**
             * 设置刻度长度,纵坐标
             
            NumberAxis numberAxis = (NumberAxis) xyplot.getRangeAxis();
            numberAxis .setAutoTickUnitSelection(false);double unit=10d;//刻度的长度
            NumberTickUnit ntu= new NumberTickUnit(unit);
            numberAxis .setTickUnit(ntu);
            */
            
            
            /**
             * 设置是否显示曲线结点
             
            if(xyitemrenderer instanceof XYLineAndShapeRenderer)
           {
                XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyitemrenderer;
                xylineandshaperenderer.setShapesVisible(true);
               xylineandshaperenderer.setShapesFilled(true);
               xylineandshaperenderer.setItemLabelsVisible(true);
           }
             */
 
            
//            PeriodAxis periodaxis = new PeriodAxis("月份");
//            periodaxis.setAutoRangeTimePeriodClass(class$org$jfree$data$time$Year != null ? class$org$jfree$data$time$Year : (class$org$jfree$data$time$Year = class$("org.jfree.data.time.Year")));
//            periodaxis.setMajorTickTimePeriodClass(class$org$jfree$data$time$Year != null ? class$org$jfree$data$time$Year : (class$org$jfree$data$time$Year = class$("org.jfree.data.time.Year")));
//            periodaxis.setTickMarkOutsideLength(0.0F);
//            PeriodAxisLabelInfo aperiodaxislabelinfo[] = new PeriodAxisLabelInfo[2];
//        
//            aperiodaxislabelinfo[0] = new PeriodAxisLabelInfo(class$org$jfree$data$time$Month != null ? class$org$jfree$data$time$Month : (class$org$jfree$data$time$Month = class$("org.jfree.data.time.Month")), new SimpleDateFormat("MMM"));
//            aperiodaxislabelinfo[1] = new PeriodAxisLabelInfo(class$org$jfree$data$time$Year != null ? class$org$jfree$data$time$Year : (class$org$jfree$data$time$Year = class$("org.jfree.data.time.Year")), new SimpleDateFormat("yyyy"));
//            periodaxis.setLabelInfo(aperiodaxislabelinfo);
//            //刻度长度,不能设为自动
//            //periodaxis.setAutoRange(false);
//            periodaxis.setAutoTickUnitSelection(false);
//            periodaxis.setAutoRangeMinimumSize(0.1d);
//            
            
            
            
//            DateAxis xAxis = new DateAxis("月份");
//            Date start_time = new Date(2001,1,1);
//            Date end_time = new Date(2003,12,1);
//            xAxis.setRange(start_time, end_time);
//            xAxis.setAutoTickUnitSelection(false);
//            xAxis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH,1));
            
            
           // xyplot.setDomainAxis(periodaxis);
            
            //设置横坐标间隔
            DateAxis domainaxis = (DateAxis)xyplot.getDomainAxis();   
            domainaxis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH,2)); //显示:0,1,2,3,...   
            
            
            //设置纵坐标间隔
            NumberAxis numberaxis  = (NumberAxis)xyplot.getRangeAxis();   
            numberaxis.setTickUnit(new NumberTickUnit(2D)); //显示:0,1,2,3,...      
            
            return jfreechart;

    }

    public String drawPic(HttpSession session, JspWriter out) {
    	  String fileName = null;
    	  JFreeChart chart = this.createChart(createDataset());
    	  try {

    		   PrintWriter pw = new PrintWriter(out);

    		   StandardEntityCollection sec = new StandardEntityCollection();
    		   ChartRenderingInfo info = new ChartRenderingInfo(sec);

    		   fileName = ServletUtilities.saveChartAsPNG(chart, 640, 400, info,session);//生成图片,并设置图片大小
    		   
    		   ChartUtilities.writeImageMap(pw, fileName, info, true);//生成图片热点
    		  } catch (IOException e) {
    		   System.out.println("生成图片时出错");
    		  }
    		  
    	  return fileName;
    }

static Class class$(String s)
    {
        try {
            return Class.forName(s);
        } catch (ClassNotFoundException e) {
            return null;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -