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

📄 freechart.java

📁 jfreechart不错的教程例子谢谢!
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package com.segsec.chart.common;

import java.io.*;
import java.awt.Font;
import java.awt.Color;
import java.text.SimpleDateFormat;
import java.text.DecimalFormat;
import java.util.Calendar;
import javax.servlet.http.HttpSession;

import org.jfree.data.*;
import org.jfree.chart.*; //数据集
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.IntervalCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.data.xy.TableXYDataset;
import org.jfree.data.xy.XYZDataset;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.data.xy.WindDataset;
import org.jfree.data.general.WaferMapDataset;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.OHLCDataset;
import org.jfree.data.xy.SignalsDataset;
import org.jfree.data.statistics.BoxAndWhiskerXYDataset;

//数据集辅助
import org.jfree.data.time.Day;
import org.jfree.data.time.Hour;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;

//图集
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.MultiplePiePlot;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.XYPlot;

//表现形式集
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.category.StackedBarRenderer;
import org.jfree.chart.renderer.category.StackedBarRenderer3D;
import org.jfree.chart.renderer.category.StackedAreaRenderer;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.renderer.category.LineRenderer3D;
import org.jfree.chart.renderer.category.WaterfallBarRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;

//标签
import org.jfree.chart.labels.StandardPieItemLabelGenerator;

//刻度
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.axis.SegmentedTimeline;

import org.jfree.chart.axis.TickUnit;
import org.jfree.chart.axis.TickUnits;
import org.jfree.chart.axis.TickUnitSource;

//通用
import org.jfree.data.general.DatasetUtilities;

//常量
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.util.TableOrder;

public class FreeChart {
	/* 定义各类图表所需的Dataset */
	private DefaultCategoryDataset vDefaultCategoryDataset = null;
	private CategoryDataset vCategoryDataset = null;
	private DefaultPieDataset vDefaultPieDataset = null;
	private PieDataset vPieDataset = null;
	private XYDataset vXYDataset = null;
	private TableXYDataset vTableXYDataset = null;
	private XYZDataset vXYZDataset = null;
	private IntervalXYDataset vIntervalXYDataset = null;
	private WindDataset vWindDataset = null;
	private WaferMapDataset vWaferMapDataset = null;
	private IntervalCategoryDataset vIntervalCategoryDataset = null;
	private OHLCDataset vOHLCDataset = null;
	private SignalsDataset vSignalsDataset = null;
	private BoxAndWhiskerXYDataset vBoxAndWhiskerXYDataset = null;
	/* 定义各类图表所需的Dataset辅助 */
	TimeSeries vTimeSeries = null;
	TimeSeriesCollection vTimeSeriesCollection = null;
	/* 定义图表 */
	private JFreeChart vFreeChart = null;
	private JFreeChart vFreeChartExtend = null;
	/* 映射图片的路径名称 */
	private String strFileName = null;

	/* 定义效果 */
	private CategoryPlot vCategoryPlot = null;
	private PiePlot vPiePlot = null;
	private MultiplePiePlot vMultiplePiePlot = null;
	private PiePlot3D vPiePlot3D = null;
	private XYPlot vXYPlot = null;

	private StandardPieItemLabelGenerator vStandardPieItemLabelGenerator = null;

	/* 定义刻度 */
	private NumberAxis vNumberAxis = null;
	private DateAxis vDateAxis = null;
	private CategoryAxis vCategoryAxis = null;
	private ValueAxis vValueAxis = null;
	private SegmentedTimeline vSegmentedTimeline = null;

	private BarRenderer vBarRenderer = null;
	private BarRenderer3D vBarRenderer3D = null;
	private StackedBarRenderer vStackedBarRenderer = null;
	private StackedBarRenderer3D vStackedBarRenderer3D = null;
	private StackedAreaRenderer vStackedAreaRenderer = null;
	private LineAndShapeRenderer vLineAndShapeRenderer = null;
	private LineRenderer3D vLineRenderer3D = null;
	private WaterfallBarRenderer vWaterfallBarRenderer = null;
	private XYItemRenderer vXYItemRenderer = null;

	// 是否启用效果模式
	private boolean bRender = false;

	/* 定义静态数据 */
	private String[] strItemArray = null;
	private String[] strMultipleItemArray = null;
	private String[] strCategoryArray = null;
	private String[] strDataArray = null;
	private String[] strMultipleDataArray = null;
	private double[][] iMultipleDataArray = null;

	/**/

	public static String[] vChartTypeArray = { "饼图", "分离型饼图", "三维饼图", "复合饼图",
			"三维分离型饼图", "簇状柱形图", "三维簇状柱形图", "堆积柱形图", "三维堆积柱形图", "面积图", "三维面积图",
			"折线图", "三维折线图", "三维曲面图", "三维柱形图", "雷达图", "散点图", "百分比堆积面积图",
			"三维百分比堆积面积图", "折线散点图", "面积散点图", "时间序列图", "三维柱形圆锥图", "盘高-盘低-收盘图",
			"开盘-盘高-盘低-收盘图", "曲面图(俯视框架图)", "气泡图", "簇状条形图", "数据点折线图",
			"无数据点折线散点图", "无数据点平滑线散点图" };
	public String strTimeAxis = "";

	public void FreeChart() {

	}

	public void createDataset(String strMultipleItemList,
			String strCategoryList, String strMultipleDataList) {
		strMultipleItemArray = strMultipleItemList.split(",");
		strCategoryArray = strCategoryList.split(",");
		strMultipleDataArray = strMultipleDataList.split("#");
		iMultipleDataArray = new double[strCategoryArray.length][strMultipleItemArray.length];

		java.text.SimpleDateFormat vSimpleDateFormat = new SimpleDateFormat(
				"yyyy-MM-dd");
		java.text.SimpleDateFormat vSimpleDateFormatToday = new SimpleDateFormat(
				"yyyy-MM-");
		java.util.Date vItemDate = null;
		java.util.Date vTodayDate = null;
		Day vDay = null;
		vTodayDate = new java.util.Date();
		vTimeSeriesCollection = new TimeSeriesCollection();
		vTimeSeriesCollection.setDomainIsPointsInTime(false);

		for (int mIndex = 0; mIndex < strMultipleDataArray.length; mIndex++) {
			String[] strElementArray = strMultipleDataArray[mIndex].split(",");
			if (strTimeAxis.equals("Hour")) {
				vTimeSeries = new TimeSeries(strCategoryArray[mIndex],
						Hour.class);
			} else {
				vTimeSeries = new TimeSeries(strCategoryArray[mIndex],
						Day.class);
			}
			// vTimeSeries.clear();
			for (int nIndex = 0; nIndex < strElementArray.length; nIndex++) {
				iMultipleDataArray[mIndex][nIndex] = Double
						.parseDouble(strElementArray[nIndex]);
				try {
					// vItemDate=vSimpleDateFormat.parse(vSimpleDateFormatToday.format(vTodayDate)+String.valueOf(nIndex+1));
					vItemDate = vSimpleDateFormat
							.parse(strMultipleItemArray[nIndex]);
					if (strTimeAxis.equals("Hour")) {
						vDay = new Day(vItemDate.getDate(), 1 + vItemDate
								.getMonth(), 1900 + vItemDate.getYear());
						vTimeSeries.add(new Hour(vItemDate.getHours(), vDay),
								Double.parseDouble(strElementArray[nIndex]));
					} else {
						vTimeSeries.add(new Day(vItemDate.getDate(),
								1 + vItemDate.getMonth(), 1900 + vItemDate
										.getYear()), Double
								.parseDouble(strElementArray[nIndex]));
					}

				} catch (Exception e) {
					System.out.println(e.getMessage());
				}
			}
			vTimeSeriesCollection.addSeries(vTimeSeries);
		}
		try {
			vCategoryDataset = DatasetUtilities.createCategoryDataset(
					strCategoryArray, strMultipleItemArray, iMultipleDataArray);
			vPieDataset = DatasetUtilities.createPieDatasetForColumn(
					vCategoryDataset, 0);
			vPieDataset = DatasetUtilities.createPieDatasetForRow(
					vCategoryDataset, 0);
			// vWaferMapDataset=(WaferMapDataset)vCategoryDataset;

			vTableXYDataset = (TableXYDataset) vTimeSeriesCollection;
			vIntervalXYDataset = (IntervalXYDataset) vTimeSeriesCollection;

			vXYDataset = (XYDataset) vTimeSeriesCollection;
			/*
			 * vXYZDataset=(XYZDataset)vTimeSeriesCollection;
			 * //vWaferMapDataset=(WaferMapDataset)vTimeSeriesCollection;
			 * vWindDataset=(WindDataset)vTimeSeriesCollection;
			 * vOHLCDataset=(OHLCDataset)vTimeSeriesCollection;
			 * vSignalsDataset=(SignalsDataset)vTimeSeriesCollection;
			 * vBoxAndWhiskerXYDataset=(BoxAndWhiskerXYDataset)vTimeSeriesCollection;
			 */
		} catch (Exception e) {
		}
	}

	public void createDataset(String strItemList, String strDataList) {
		vDefaultCategoryDataset = new DefaultCategoryDataset();
		vDefaultPieDataset = new DefaultPieDataset();

		strItemArray = strItemList.split(",");
		strDataArray = strDataList.split(",");
		for (int kIndex = 0; kIndex < strItemArray.length; kIndex++) {
			vDefaultCategoryDataset.addValue(Double
					.parseDouble(strDataArray[kIndex]), " ",
					strItemArray[kIndex]);
			vDefaultPieDataset.setValue(strItemArray[kIndex], Double
					.parseDouble(strDataArray[kIndex]));
		}
	}

	public DefaultCategoryDataset getDefaultCategoryDataset() {
		return this.vDefaultCategoryDataset;
	}

	public CategoryDataset getCategoryDataset() {
		return this.vCategoryDataset;
	}

	public DefaultPieDataset getDefaultPieDataset() {
		return this.vDefaultPieDataset;
	}

	public PieDataset getPieDataset() {
		return this.vPieDataset;
	}

	public XYDataset getXYDataset() {
		return this.vXYDataset;
	}

	public TableXYDataset getTableXYDataset() {
		return this.vTableXYDataset;
	}

	public XYZDataset getXYZDataset() {
		return this.vXYZDataset;
	}

	public IntervalXYDataset getIntervalXYDataset() {
		return this.vIntervalXYDataset;
	}

	public WindDataset getWindDataset() {
		return this.vWindDataset;
	}

	public WaferMapDataset getWaferMapDataset() {
		return this.vWaferMapDataset;
	}

	public IntervalCategoryDataset getIntervalCategoryDataset() {
		return this.vIntervalCategoryDataset;
	}

	public OHLCDataset getOHLCDataset() {
		return this.vOHLCDataset;
	}

	public SignalsDataset getSignalsDataset() {
		return this.vSignalsDataset;
	}

	public BoxAndWhiskerXYDataset getBoxAndWhiskerXYDataset() {
		return this.vBoxAndWhiskerXYDataset;
	}

	/*
	 * iChartType:图表类型
	 */
	public void createChart(int iChartType,String strFreeChartInfo,String strFreeChartXInfo,String strFreeChartYInfo)
 {
  switch(iChartType)
  {
   case 1:    
    vFreeChart=ChartFactory.createPieChart(strFreeChartInfo,this.getPieDataset(),true,false,false);
    try
    {
     vPiePlot=(PiePlot)vFreeChart.getPlot();
     if(vPiePlot!=null)
     {
      if(bRender)
      {
       if(strItemArray.length>0)
       {
        for(int iIndex=0;iIndex<strItemArray.length;iIndex++)
        {
         // 指定Section色彩
         vPiePlot.setSectionPaint(iIndex,new Color(0,0+iIndex*(255/strItemArray.length),255));
         // 指定Section轮廓线颜色
         vPiePlot.setSectionOutlinePaint(0,Color.BLACK);
        }
       }
      }
      // 指定Section标签格式
      vStandardPieItemLabelGenerator=new StandardPieItemLabelGenerator("{1}");
      vPiePlot.setLabelGenerator(vStandardPieItemLabelGenerator);
      //
      vPiePlot.setForegroundAlpha(0.5f);
     }
    }
    catch(Exception e)
    {}
    break;
   case 2:
    

vFreeChart=ChartFactory.createPieChart(strFreeChartInfo,this.getPieDataset(),this.getPieDataset(),0,false,true,false,false,false,false);
    try
    {
     vPiePlot=(PiePlot)vFreeChart.getPlot();
     if(vPiePlot!=null)
     {
      if(bRender)
      {

⌨️ 快捷键说明

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