JOFC 实例【张小俊原创】

 

我在网上看了很多帖子觉得他们写的jofc的小例子不怎么样,所以我就写了个jofc的工具类。代码如下

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import jofc2.model.Chart;
import jofc2.model.Text;
import jofc2.model.axis.XAxis;
import jofc2.model.axis.YAxis;
import jofc2.model.elements.BarChart;
import jofc2.model.elements.LineChart;
import jofc2.model.elements.PieChart;
import jofc2.model.elements.StackedBarChart;
import jofc2.model.elements.BarChart.Bar;
import jofc2.model.elements.BarChart.Style;
import jofc2.model.elements.PieChart.Slice;

/**
 * flashchart报表工具
 * @author andysun
 * @create 2011-1-18
 * @since V1.5.3
 */
public class ChartUtil {
 
 // PieChart的一些属性
 // 字体大小
 public static String PIE_FONT_SIZE_PROP = "PIE_FONT_SIZE";
 public static Integer PIE_FONT_SIZE = new Integer(15);
 // 设置角度
 public static String PIE_START_ANGLE_PROP = "PIE_START_ANGLE";
 public static Integer PIE_START_ANGLE = new Integer(100);
 // 动态显示
 public static String PIE_ANIMATE_PROP = "PIE_ANIMATE";
 public static Boolean PIE_ANIMATE = true;
 // 颜色
 public static String[] PIE_COLOURS = new String[] { "0x336699" , "0x88AACC" , "0x999933" ,
  "0x666699" , "0xCC9933" , "0x006666" , "0x3399FF" , "0x993300" ,
  "0xAAAA77" , "0x666666" , "0xFFCC66" , "0x6699CC" , "0x663366" ,
  "0x9999CC" , "0xAAAAAA" , "0x669999" , "0xBBBB55" , "0xCC6600" ,
  "0x9999FF" , "0x0066CC" , "0x99CCCC" , "0x999999" , "0xFFCC00" ,
  "0x009999" , "0x99CC33" , "0xFF9900" , "0x999966" , "0x66CCCC" ,
  "0x339966" , "0xCCCC33" };
 // 鼠标移动上去后提示内容
 public static String PIE_TOOL_TIP_PROP = "PIE_TOOL_TIP";
 public static String PIE_TOOL_TIP = "#val# / #total#<br> 占百分之 #percent#";
 // pie图的大小
 public static String PIE_RADIUS_PROP = "PIE_RADIUS";
 public static Integer PIE_RADIUS = new Integer(60);
 // 整个图的标题
 public static String PIE_TITLE_TEXT_PROP = "PIE_TITLE_TEXT";
 public static String PIE_TITLE_TEXT = "饼图报表分析";
 // 标题样式
 public static String PIE_TITLE_STYLE_PROP = "PIE_TITLE_STYLE";
 public static String PIE_TITLE_STYLE = "{font-size:20px; color: #000000; margin: 5px; background-color: #FFFFFF; padding:5px; padding-left: 20px; padding-right: 20px;}"; 
 // 背景颜色
 public static String PIE_BACK_GROUND_COLOUR_PROP = "PIE_BACK_GROUND_COLOUR";
 public static String PIE_BACK_GROUND_COLOUR = "#FFFFFF";  
 
 /**
  * 生成PieChart
  * @author andysun ,@createTime 2011-1-18
  * @param values 需要显示的数据
  * @param propMap 需要修改的属性
  * @return
  */
 public static String getPieChart(List<Slice> values,Map<String,Object> propMap){
  // 创建pie对象
  PieChart  pie =  new PieChart();
  // 设置pie的一些属性
  // 设置字体大小
  if(propMap.containsKey(PIE_FONT_SIZE_PROP))pie.setFontSize(Integer.valueOf(propMap.get(PIE_FONT_SIZE_PROP).toString()));
  else pie.setFontSize(PIE_FONT_SIZE);
  // 设置角度
  if(propMap.containsKey(PIE_START_ANGLE_PROP))pie.setStartAngle(Integer.valueOf(propMap.get(PIE_START_ANGLE_PROP).toString()));
  else pie.setStartAngle(PIE_START_ANGLE);
  // 动态显示
  if(propMap.containsKey(PIE_ANIMATE_PROP))pie.setAnimate(Boolean.valueOf(propMap.get(PIE_ANIMATE_PROP).toString()));
  else pie.setAnimate(PIE_ANIMATE);
  // 设置颜色
  pie.setColours(PIE_COLOURS);
  // 鼠标移动上去后提示内容
  if(propMap.containsKey(PIE_TOOL_TIP_PROP))pie.setTooltip(propMap.get(PIE_TOOL_TIP_PROP).toString());
  else pie.setTooltip(PIE_TOOL_TIP);
  // pie图的大小
  if(propMap.containsKey(PIE_RADIUS_PROP))pie.setRadius(Integer.valueOf(propMap.get(PIE_RADIUS_PROP).toString()));
  else pie.setRadius(PIE_RADIUS);
  // 整个图标的样式
  String titleText = PIE_TITLE_TEXT;
  String titleStyle = PIE_TITLE_STYLE;
  if(propMap.containsKey(PIE_TITLE_TEXT_PROP))titleText = propMap.get(PIE_TITLE_TEXT_PROP).toString();
  if(propMap.containsKey(PIE_TITLE_STYLE))titleStyle = propMap.get(PIE_TITLE_STYLE_PROP).toString();
  Chart flashChart = new Chart(titleText , titleStyle ); // 整个图的标题
  // 设置背景颜色
  if(propMap.containsKey(PIE_BACK_GROUND_COLOUR_PROP))flashChart.setBackgroundColour(propMap.get(PIE_BACK_GROUND_COLOUR_PROP).toString());
  else flashChart.setBackgroundColour(PIE_BACK_GROUND_COLOUR);
  // 放入数据
  pie.addSlices(values);
  flashChart.addElements(pie); // 把饼图加入到图表  
  return flashChart.toString();// 转成 json 格式
 }
 
 // 条状图样式
 public static String BAR_CHART_STYLE_PROP = "BAR_CHART_STYLE";
 public static Style BAR_CHART_STYLE = BarChart.Style.GLASS;
 // Y 轴最大值
 public static String BAR_Y_MAX_PROP = "BAR_Y_MAX";
 public static Double BAR_Y_MAX = new Double(900);
 // X 轴的文字
 public static String BAR_X_LABEL_PROP = "BAR_X_LABEL";
 public static String BAR_X_LABEL = "";
 // bar的颜色
 public static String BAR_BAR_COLOR_PROP = "BAR_BAR_COLOR";
 public static String BAR_BAR_COLOR = "0x336699"; 
 // 鼠标移动上去后的提示
 public static String BAR_TOOL_TIP_PROP = "BAR_TOOL_TIP";
 public static String BAR_TOOL_TIP = ""; 
 // 背景颜色
 public static String BAR_BACK_GROUND_COLOUR_PROP = "BAR_BACK_GROUND_COLOUR";
 public static String BAR_BACK_GROUND_COLOUR = "#FFFFFF"; 
 // 整个图的标题
 public static String BAR_TITLE_TEXT_PROP = "BAR_TITLE_TEXT";
 public static String BAR_TITLE_TEXT = "柱状报表分析";
 // 标题样式
 public static String BAR_TITLE_STYLE_PROP = "BAR_TITLE_STYLE";
 public static String BAR_TITLE_STYLE = "font-size:30px;color:#ff0000;"; 
 // 步进
 public static String BAR_Y_STEPS_PROP = "BAR_Y_STEPS";
 public static Double BAR_Y_STEPS = new Double(BAR_Y_MAX/10);
 // Y 轴显示内容
 public static String BAR_Y_TEXT_PROP = "BAR_Y_TEXT";
 public static String BAR_Y_TEXT = "Y";  
 // Y 轴显示内容样式
 public static String BAR_Y_TEXT_TYPE_PROP = "BAR_Y_TEXT_TYPE";
 public static String BAR_Y_TEXT_TYPE = Text.createStyle(20, "#736AFF", Text.TEXT_ALIGN_CENTER); 
 // X 轴显示内容
 public static String BAR_X_TEXT_PROP = "BAR_X_TEXT";
 public static String BAR_X_TEXT = "X";  
 // X 轴显示内容样式
 public static String BAR_X_TEXT_TYPE_PROP = "BAR_X_TEXT_TYPE";
 public static String BAR_X_TEXT_TYPE = Text.createStyle(20, "#736AFF", Text.TEXT_ALIGN_CENTER); 
 
 /**
  * 生成 BarChart
  * @author andysun ,@createTime 2011-1-19
  * @param dataMap
  * @param propMap
  * @return
  */
 public static String getBarChart(Map<Object,Object> dataMap , Map<String,Object> propMap){
  BarChart chart = null;
  // 设置条状图样式
  if(propMap.containsKey(BAR_CHART_STYLE_PROP))chart = new BarChart((Style)propMap.get(BAR_CHART_STYLE_PROP));
  else chart = new BarChart(BAR_CHART_STYLE);
  //Y 轴最大值
  Double yMax = BAR_Y_MAX; 
  if(propMap.containsKey(BAR_Y_MAX_PROP))yMax = (Double)propMap.get(BAR_Y_MAX_PROP);
  String xAxisLable =  BAR_X_LABEL;
  if(propMap.containsKey(BAR_X_LABEL_PROP))xAxisLable = propMap.get(BAR_X_LABEL_PROP).toString();  
  String xBarColor = BAR_BAR_COLOR;
  if(propMap.containsKey(BAR_BAR_COLOR_PROP))xBarColor = propMap.get(BAR_BAR_COLOR_PROP).toString();    
  String xBarToolTip  = BAR_TOOL_TIP;
  if(propMap.containsKey(BAR_TOOL_TIP_PROP))xBarToolTip = propMap.get(BAR_TOOL_TIP_PROP).toString();   
  
  // X 轴
  XAxis x = new XAxis();
  for (Object key:dataMap.keySet()){
   // x 轴的文字
   x.addLabels(key + xAxisLable);
   Bar bar = new Bar(Long.valueOf(dataMap.get(key).toString()));
   // 颜色
   bar.setColour(xBarColor);
   // 鼠标移动上去后的提示
   bar.setTooltip(dataMap.get(key) + xBarToolTip);
   // 条标题,显示在 x 轴上
   chart.addBars(bar);
  }
  // 整个图标的样式
  String titleText = BAR_TITLE_TEXT;
  String titleStyle = BAR_TITLE_STYLE;
  if(propMap.containsKey(BAR_TITLE_TEXT_PROP))titleText = propMap.get(BAR_TITLE_TEXT_PROP).toString();
  if(propMap.containsKey(BAR_TITLE_STYLE))titleStyle = propMap.get(BAR_TITLE_STYLE_PROP).toString();
  Chart flashChart = new Chart(titleText , titleStyle ); // 整个图的标题
  // 把柱图加入到图表
  flashChart.addElements(chart);   
   //y 轴 
  YAxis y = new YAxis(); 
  //y 轴最大值 
  y.setMax(yMax); 
  // 步进 
  if(propMap.containsKey(BAR_Y_STEPS_PROP))y.setSteps((Double)propMap.get(BAR_Y_STEPS_PROP));
  else y.setSteps(BAR_Y_STEPS);
  flashChart.setYAxis(y); 
  flashChart.setXAxis(x); 
  //设置y轴显示内容
  String yText = BAR_Y_TEXT;
  String yStyle = BAR_Y_TEXT_TYPE;
  if(propMap.containsKey(BAR_Y_TEXT_PROP))yText = propMap.get(BAR_Y_TEXT_PROP).toString();
  if(propMap.containsKey(BAR_Y_TEXT_TYPE_PROP))yStyle = propMap.get(BAR_Y_TEXT_TYPE_PROP).toString(); 
  Text yLegend = new Text(yText,yStyle);
  // Y 轴显示内容
  flashChart.setYLegend(yLegend);
  //设置y轴显示内容
  String xText = BAR_X_TEXT;
  String xStyle = BAR_X_TEXT_TYPE;
  if(propMap.containsKey(BAR_X_TEXT_PROP))yText = propMap.get(BAR_X_TEXT_PROP).toString();
  if(propMap.containsKey(BAR_X_TEXT_TYPE_PROP))yStyle = propMap.get(BAR_X_TEXT_TYPE_PROP).toString(); 
  Text xLegend = new Text(xText,xStyle);
  // X 轴显示内容
  flashChart.setXLegend(xLegend);
  // 设置背景颜色
  if(propMap.containsKey(BAR_BACK_GROUND_COLOUR_PROP))flashChart.setBackgroundColour(propMap.get(BAR_BACK_GROUND_COLOUR_PROP).toString());
  else flashChart.setBackgroundColour(BAR_BACK_GROUND_COLOUR);
  return flashChart.toString();
 }
 
 // 字体大小
 public static String LINE_FONT_SIZE_PROP = "LINE_FONT_SIZE";
 public static Integer LINE_FONT_SIZE = new Integer(15);
 //设置鼠标移到点上显示的内容
 public static String LINE_TOOL_TIP_PROP = "LINE_TOOL_TIP";
 public static String LINE_TOOL_TIP = "#val#%"; 
 // Y 轴最大值
 public static String LINE_Y_MAX_PROP = "LINE_Y_MAX";
 public static Double LINE_Y_MAX = new Double(100);
 // 步进
 public static String LINE_Y_STEPS_PROP = "LINE_Y_STEPS";
 public static Double LINE_Y_STEPS = new Double(LINE_Y_MAX/10);
 // 整个图的标题
 public static String LINE_TITLE_TEXT_PROP = "LINE_TITLE_TEXT";
 public static String LINE_TITLE_TEXT = "线状报表分析";
 // 标题样式
 public static String LINE_TITLE_STYLE_PROP = "LINE_TITLE_STYLE";
 public static String LINE_TITLE_STYLE = "font-size:30px;color:#ff0000;"; 
 // Y 轴显示内容
 public static String LINE_Y_TEXT_PROP = "LINE_Y_TEXT";
 public static String LINE_Y_TEXT = "Y";  
 // Y 轴显示内容样式
 public static String LINE_Y_TEXT_TYPE_PROP = "LINE_Y_TEXT_TYPE";
 public static String LINE_Y_TEXT_TYPE = Text.createStyle(20, "#736AFF", Text.TEXT_ALIGN_CENTER); 
 // X 轴显示内容
 public static String LINE_X_TEXT_PROP = "LINE_X_TEXT";
 public static String LINE_X_TEXT = "X";  
 // X 轴显示内容样式
 public static String LINE_X_TEXT_TYPE_PROP = "LINE_X_TEXT_TYPE";
 public static String LINE_X_TEXT_TYPE = Text.createStyle(20, "#736AFF", Text.TEXT_ALIGN_CENTER); 
 // 背景颜色
 public static String LINE_BACK_GROUND_COLOUR_PROP = "LINE_BACK_GROUND_COLOUR";
 public static String LINE_BACK_GROUND_COLOUR = "#FFFFFF"; 
 
 /**
  * 生成 LineChart
  * @author andysun ,@createTime 2011-1-19
  * @param datas
  * @param xLabels
  * @param propMap
  * @return
  */
 public static String getLineChart(List<LineChart.Dot> datas ,List<String> xLabels, Map<String,Object> propMap){
  
  // 创建lineChart对象
  LineChart lineChart = new LineChart();
  // 设置字体
  if(propMap.containsKey(LINE_FONT_SIZE_PROP))lineChart.setFontSize(Integer.valueOf(propMap.get(LINE_FONT_SIZE_PROP).toString()));
  else lineChart.setFontSize(LINE_FONT_SIZE);
  //设置鼠标移到点上显示的内容
  if(propMap.containsKey(LINE_TOOL_TIP_PROP))lineChart.setTooltip(propMap.get(LINE_TOOL_TIP_PROP).toString());
  else lineChart.setTooltip(LINE_TOOL_TIP);
  //按照顺序把点加入到图形中
  lineChart.addDots(datas);
   // X 轴
  XAxis x = new XAxis();
  x.setLabels(xLabels);
  //Y 轴最大值
  Double yMax = LINE_Y_MAX;
  if(propMap.containsKey(LINE_Y_MAX_PROP))yMax = (Double)propMap.get(LINE_Y_MAX_PROP);
  //y 轴  
  YAxis y = new YAxis();
  //y 轴最大值
  y.setMax(yMax);  
  // 步进 
  if(propMap.containsKey(LINE_Y_STEPS_PROP))y.setSteps((Double)propMap.get(LINE_Y_STEPS_PROP));
  else y.setSteps(LINE_Y_STEPS);
  // 整个图标的样式
  String titleText = LINE_TITLE_TEXT;
  String titleStyle = LINE_TITLE_STYLE;
  if(propMap.containsKey(LINE_TITLE_TEXT_PROP))titleText = propMap.get(LINE_TITLE_TEXT_PROP).toString();
  if(propMap.containsKey(LINE_TITLE_STYLE_PROP))titleStyle = propMap.get(LINE_TITLE_STYLE_PROP).toString();
  // 整个图的标题
  Chart flashChart = new Chart(titleText , titleStyle );
  // 把线图加入到图表  
  flashChart.addElements(lineChart);
  //设置y轴显示内容
  String yText = LINE_Y_TEXT;
  String yStyle = LINE_Y_TEXT_TYPE;
  if(propMap.containsKey(LINE_Y_TEXT_PROP))yText = propMap.get(LINE_Y_TEXT_PROP).toString();
  if(propMap.containsKey(LINE_Y_TEXT_TYPE_PROP))yStyle = propMap.get(LINE_Y_TEXT_TYPE_PROP).toString(); 
  Text yLegend = new Text(yText,yStyle);
  // Y 轴显示内容
  flashChart.setYLegend(yLegend);
  //设置x轴显示内容
  String xText = LINE_X_TEXT;
  String xStyle = LINE_X_TEXT_TYPE;
  if(propMap.containsKey(LINE_X_TEXT_PROP))yText = propMap.get(LINE_X_TEXT_PROP).toString();
  if(propMap.containsKey(LINE_X_TEXT_TYPE_PROP))yStyle = propMap.get(LINE_X_TEXT_TYPE_PROP).toString(); 
  Text xLegend = new Text(xText,xStyle);
  // X 轴显示内容
  flashChart.setXLegend(xLegend);
  // 添加x轴
  flashChart.setXAxis(x);
  // 添加y轴
  flashChart.setYAxis(y);
  // 设置背景颜色
  if(propMap.containsKey(LINE_BACK_GROUND_COLOUR_PROP))flashChart.setBackgroundColour(propMap.get(LINE_BACK_GROUND_COLOUR_PROP).toString());
  else flashChart.setBackgroundColour(LINE_BACK_GROUND_COLOUR);
  return flashChart.toString();
 }
 
 // Y 轴最大值
 public static String STACKED_BAR_Y_MAX_PROP = "STACKED_BAR_Y_MAX";
 public static Double STACKED_BAR_Y_MAX = new Double(1000);
 // X 轴3d
 public static String STACKED_BAR_X_3D_PROP = "STACKED_BAR_X_3D";
 public static Integer STACKED_BAR_X_3D = new Integer(0);
 // Y 轴3d
 public static String STACKED_BAR_Y_3D_PROP = "STACKED_BAR_Y_3D";
 public static Integer STACKED_BAR_Y_3D = new Integer(0);
 // X 轴的颜色
 public static String STACKED_BAR_X_COLOUR_PROP = "STACKED_BAR_X_COLOUR";
 public static String STACKED_BAR_X_COLOUR = "#909090";
 // Y 轴的颜色
 public static String STACKED_BAR_Y_COLOUR_PROP = "STACKED_BAR_Y_COLOUR";
 public static String STACKED_BAR_Y_COLOUR = "#909090";
 // X 轴Grid的颜色
 public static String STACKED_BAR_X_GRID_COLOUR_PROP = "STACKED_BAR_X_GRID_COLOUR";
 public static String STACKED_BAR_X_GRID_COLOUR = "#ADB5C7"; 
 // Y 轴Grid的颜色
 public static String STACKED_BAR_Y_GRID_COLOUR_PROP = "STACKED_BAR_Y_GRID_COLOUR";
 public static String STACKED_BAR_Y_GRID_COLOUR = "#ADB5C7"; 
 // X 轴的文字
 public static String STACKED_BAR_X_LABEL_PROP = "STACKED_BAR_X_LABEL";
 public static String STACKED_BAR_X_LABEL = "";
 // key的字体的大小
 public static String STACKED_BAR_KEY_FONT_SIZE_PROP = "STACKED_BAR_KEY_FONT_SIZE";
 public static Integer STACKED_BAR_KEY_FONT_SIZE = new Integer(10); 
 // 整个图的标题
 public static String STACKED_BAR_TITLE_TEXT_PROP = "STACKED_BAR_TITLE_TEXT";
 public static String STACKED_BAR_TITLE_TEXT = "组合柱状报表分析";
 // 标题样式
 public static String STACKED_BAR_TITLE_STYLE_PROP = "STACKED_BAR_TITLE_STYLE";
 public static String STACKED_BAR_TITLE_STYLE = "{font-size:20px; color: #000000; margin: 5px; background-color: #FFFFFF; padding:5px; padding-left: 20px; padding-right: 20px;}"; 
 // 步进
 public static String STACKED_BAR_Y_STEPS_PROP = "STACKED_BAR_Y_STEPS";
 public static Double STACKED_BAR_Y_STEPS = new Double(STACKED_BAR_Y_MAX/10);
 // Y 轴显示内容
 public static String STACKED_BAR_Y_TEXT_PROP = "STACKED_BAR_Y_TEXT";
 public static String STACKED_BAR_Y_TEXT = "Y";  
 // Y 轴显示内容样式
 public static String STACKED_BAR_Y_TEXT_TYPE_PROP = "STACKED_BAR_Y_TEXT_TYPE";
 public static String STACKED_BAR_Y_TEXT_TYPE = Text.createStyle(20, "#736AFF", Text.TEXT_ALIGN_CENTER); 
 // X 轴显示内容
 public static String STACKED_BAR_X_TEXT_PROP = "STACKED_BAR_X_TEXT";
 public static String STACKED_BAR_X_TEXT = "X";  
 // X 轴显示内容样式
 public static String STACKED_BAR_X_TEXT_TYPE_PROP = "STACKED_BAR_X_TEXT_TYPE";
 public static String STACKED_BAR_X_TEXT_TYPE = Text.createStyle(20, "#736AFF", Text.TEXT_ALIGN_CENTER); 
 // 背景颜色
 public static String STACKED_BAR_BACK_GROUND_COLOUR_PROP = "STACKED_BAR_BACK_GROUND_COLOUR";
 public static String STACKED_BAR_BACK_GROUND_COLOUR = "#FFFFFF"; 
 
 /**
  * 生成组合柱状图
  * @author andysun ,@createTime 2011-1-19
  * @param xAxis
  * @param xAxisType
  * @param dataMap
  * @param propMap
  * @return
  */
 public static String getStackedBarChart(List<Object> xAxis ,Map<Object,String> xAxisType ,Map<Object,Object> dataMap ,Map<String,Object> propMap){
  // 设置组合柱状图
  StackedBarChart chart = new StackedBarChart();
  // X 轴
  XAxis x = new XAxis();
  // x-3d效果
  if(propMap.containsKey(STACKED_BAR_X_3D_PROP))x.set3D(Integer.valueOf(propMap.get(STACKED_BAR_X_3D_PROP).toString()));
  else x.set3D(STACKED_BAR_X_3D);
  // X 轴的颜色
  if(propMap.containsKey(STACKED_BAR_X_COLOUR_PROP))x.setColour(propMap.get(STACKED_BAR_X_COLOUR_PROP).toString());
  else x.setColour(STACKED_BAR_X_COLOUR);
  // X 轴Grid的颜色
  if(propMap.containsKey(STACKED_BAR_X_GRID_COLOUR_PROP))x.setGridColour(propMap.get(STACKED_BAR_X_GRID_COLOUR_PROP).toString());
  else x.setGridColour(STACKED_BAR_X_GRID_COLOUR);
  // X 轴文字
  String xLables = STACKED_BAR_X_LABEL;
  if(propMap.containsKey(STACKED_BAR_X_LABEL_PROP))xLables = propMap.get(STACKED_BAR_X_LABEL_PROP).toString();
  // 组装柱组
  StackedBarChart.Stack stack = null;
  for (Object key: xAxis){
   stack = new StackedBarChart.Stack();//新建柱组
   // x 轴的文字
   x.addLabels(key + xLables);
   StackedBarChart.StackValue stackValue = null;
   for(Object typeValue: xAxisType.keySet()){
    stackValue = new StackedBarChart.StackValue(Double.valueOf(dataMap.get(key.toString()+typeValue.toString()).toString()),xAxisType.get(typeValue));
    stack.addStackValues(stackValue);
   }
   chart.addStack(stack); // 条标题,显示在 x 轴上
  }

  // 组装key
  StackedBarChart.Key key = null;
  Integer fontSize = STACKED_BAR_KEY_FONT_SIZE;
  if(propMap.containsKey(STACKED_BAR_KEY_FONT_SIZE_PROP))fontSize = Integer.valueOf(propMap.get(STACKED_BAR_KEY_FONT_SIZE_PROP).toString());   
  for(Object typeValue: xAxisType.keySet()){
   key = new StackedBarChart.Key(xAxisType.get(typeValue.toString()),typeValue.toString(),fontSize);
   chart.addKeys(key);
  }
  
  // 整个图标的样式
  String titleText = STACKED_BAR_TITLE_TEXT;
  String titleStyle = STACKED_BAR_TITLE_STYLE;
  if(propMap.containsKey(STACKED_BAR_TITLE_TEXT_PROP))titleText = propMap.get(STACKED_BAR_TITLE_TEXT_PROP).toString();
  if(propMap.containsKey(STACKED_BAR_TITLE_STYLE_PROP))titleStyle = propMap.get(STACKED_BAR_TITLE_STYLE_PROP).toString();
  // 整个图的标题
  Chart flashChart = new Chart(titleText , titleStyle);
  // 把柱图加入到图表 
  flashChart.addElements(chart);     
  //y 轴  
  YAxis y = new YAxis(); 
  // y 轴3d
  if(propMap.containsKey(STACKED_BAR_Y_3D_PROP))y.set3D(Integer.valueOf(propMap.get(STACKED_BAR_Y_3D_PROP).toString()));
  else y.set3D(STACKED_BAR_Y_3D);
  // Y 轴的颜色
  if(propMap.containsKey(STACKED_BAR_Y_COLOUR_PROP))y.setColour(propMap.get(STACKED_BAR_Y_COLOUR_PROP).toString());
  else y.setColour(STACKED_BAR_Y_COLOUR);
  // Y 轴Grid的颜色
  if(propMap.containsKey(STACKED_BAR_Y_GRID_COLOUR_PROP))y.setGridColour(propMap.get(STACKED_BAR_Y_GRID_COLOUR_PROP).toString());
  else y.setGridColour(STACKED_BAR_Y_GRID_COLOUR);
  //y 轴最大值
  if(propMap.containsKey(STACKED_BAR_Y_MAX_PROP)){
   Double ymax = Double.valueOf(propMap.get(STACKED_BAR_Y_MAX_PROP).toString());
   y.setMax(ymax);
   STACKED_BAR_Y_STEPS = new Double(ymax/10);
  }else y.setMax(STACKED_BAR_Y_MAX);  
  // 步进 
  if(propMap.containsKey(STACKED_BAR_Y_STEPS_PROP))y.setSteps((Double)propMap.get(STACKED_BAR_Y_STEPS_PROP));
  else y.setSteps(STACKED_BAR_Y_STEPS);
  flashChart.setYAxis(y); 
  flashChart.setXAxis(x); 
  //设置y轴左侧的文字
  String yText = STACKED_BAR_Y_TEXT;
  String yStyle = STACKED_BAR_Y_TEXT_TYPE;
  if(propMap.containsKey(STACKED_BAR_Y_TEXT_PROP))yText = propMap.get(STACKED_BAR_Y_TEXT_PROP).toString();
  if(propMap.containsKey(STACKED_BAR_Y_TEXT_TYPE_PROP))yStyle = propMap.get(STACKED_BAR_Y_TEXT_TYPE_PROP).toString(); 
  Text yLegend = new Text(yText,yStyle);
  // Y 轴显示内容
  flashChart.setYLegend(yLegend);
  //设置x轴下面的文字
  String xText = STACKED_BAR_X_TEXT;
  String xStyle = STACKED_BAR_X_TEXT_TYPE;
  if(propMap.containsKey(STACKED_BAR_X_TEXT_PROP))xText = propMap.get(STACKED_BAR_X_TEXT_PROP).toString();
  if(propMap.containsKey(STACKED_BAR_X_TEXT_TYPE_PROP))xStyle = propMap.get(STACKED_BAR_X_TEXT_TYPE_PROP).toString(); 
  Text xLegend = new Text(xText,xStyle);
  // X 轴显示内容
  flashChart.setXLegend(xLegend);
  // 设置背景颜色
  if(propMap.containsKey(STACKED_BAR_BACK_GROUND_COLOUR_PROP))flashChart.setBackgroundColour(propMap.get(STACKED_BAR_BACK_GROUND_COLOUR_PROP).toString());
  else flashChart.setBackgroundColour(STACKED_BAR_BACK_GROUND_COLOUR);
  return flashChart.toString();
 }
 
 public static void main(String[] args) {
  
  List<Slice> values = new ArrayList<Slice>();
  values.add(new Slice(200000000,"实收费用"));
  values.add(new Slice(60000000,"欠费金额"));
  values.add(new Slice(30000000,"报停金额"));
  values.add(new Slice(20000000,"减免金额"));
//  System.out.println(getPieChart(values,new HashMap<String, Object>()));
  
  Map<Object,Object> map = new HashMap<Object,Object>();
  map.put( "5" , new Long(50));
  map.put( "6" , new Long(45));
  map.put( "7" , new Long(60));
  map.put( "8" , new Long(30));
  map.put( "9" , new Long(80));
  map.put( "10" , new Long(500));
  map.put( "11" , new Long(800));
  map.put( "12" , new Long(200));
//  System.out.println(getBarChart(map,new HashMap<String, Object>()));
  
  List<LineChart.Dot> datas = new ArrayList<LineChart.Dot>();
  datas.add(new LineChart.Dot(70));
  datas.add(new LineChart.Dot(85));
  datas.add(new LineChart.Dot(44));
  datas.add(new LineChart.Dot(67));
  datas.add(new LineChart.Dot(90));
  datas.add(new LineChart.Dot(64));
  datas.add(new LineChart.Dot(28));
  datas.add(new LineChart.Dot(99));  
  List<String> xLabels = new ArrayList<String>();
  xLabels.add("5月份");
  xLabels.add("6月份");
  xLabels.add("7月份");
  xLabels.add("8月份");
  xLabels.add("9月份");
  xLabels.add("10月份");
  xLabels.add("11月份");
  xLabels.add("12月份");
//  System.out.println(getLineChart(datas,xLabels,new HashMap<String, Object>()));
  
  Map<Object,Object> dataMap = new HashMap<Object,Object>();
  dataMap.put("5包烧费" , new Long(50));
  dataMap.put("5热表收费" , new Long(60));
  dataMap.put("5生活热水收费" , new Long(70));
  dataMap.put("6包烧费" , new Long(45));
  dataMap.put("6热表收费" , new Long(55));
  dataMap.put("6生活热水收费" , new Long(65));
  dataMap.put("7包烧费" , new Long(60));
  dataMap.put("7热表收费" , new Long(70));
  dataMap.put("7生活热水收费" , new Long(80));
  dataMap.put("8包烧费" , new Long(30));
  dataMap.put("8热表收费" , new Long(40));
  dataMap.put("8生活热水收费" , new Long(50));
  dataMap.put("9包烧费" , new Long(80));
  dataMap.put("9热表收费" , new Long(90));
  dataMap.put("9生活热水收费" , new Long(100));
  dataMap.put("10包烧费" , new Long(210));
  dataMap.put("10热表收费" , new Long(310));
  dataMap.put("10生活热水收费" , new Long(120));
  dataMap.put("11包烧费" , new Long(300));
  dataMap.put("11热表收费" , new Long(310));
  dataMap.put("11生活热水收费" , new Long(320));
  dataMap.put("12包烧费" , new Long(210));
  dataMap.put("12热表收费" , new Long(220));
  dataMap.put("12生活热水收费" , new Long(230));
  
  List<Object> xAxis = new ArrayList<Object>();
  xAxis.add("5");
  xAxis.add("6");
  xAxis.add("7");
  xAxis.add("8");
  xAxis.add("9");
  xAxis.add("10");
  xAxis.add("11");
  xAxis.add("12");
  
  Map<Object,String> xAxisType = new HashMap<Object, String>();
  xAxisType.put("包烧费", "#009900");
  xAxisType.put("热表收费", "#3334AD");
  xAxisType.put("生活热水收费","#D54C78");
  
  Map<String,Object> StackedBarPropMap = new HashMap<String, Object>();
  StackedBarPropMap.put(ChartUtil.STACKED_BAR_X_LABEL_PROP, "月份");
//  System.out.println(getStackedBarChart(xAxis,xAxisType,dataMap,StackedBarPropMap));
 }
}

 

引用这个类就可以生成前台所需要的jocf的json数据,比较方便,希望对各位有用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值