`
wenhai_zhang
  • 浏览: 186147 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

【转】FusionCharts兑现流程甘特图

 
阅读更多
package com.ist.pmp.gantt;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.springframework.context.ApplicationContext;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.ist.common.jcs.CatchManager;
import com.ist.pmp.dao.T06_GanttDAO;

public class FusionChartDataFile {
	private Document document;
	private ApplicationContext context;
	private SqlMapClient sqlMap;
	private CatchManager cm;
	private String projectkey;
	private File path;
	private Map timeArea;
	
	private int rowNum;
	
	public FusionChartDataFile(ApplicationContext context,SqlMapClient sqlMap,CatchManager cm,String projectkey,File path) throws SQLException, IOException {
		this.context=context;
		this.sqlMap=sqlMap;
		this.cm=cm;
		this.projectkey=projectkey;
		this.path=path;
		getTimeArea();
		bulidFusionChartDateFile();
	}
	private void bulidFusionChartDateFile() throws SQLException, IOException{
		
		//1创建根
		Element rootElement=getRootElement();
		
		addCategoriesnode1(rootElement);
		addCategoriesnode2(rootElement);
		addCategoriesnode3(rootElement);
		addProcesses(rootElement);
		addLegend(rootElement);
		addStyles(rootElement);
		/*项目用不到,所以这里不实现
		//阶段联结线
		addConnectors(rootElement);
		//里程碑星形图案
		addMilestones(rootElement);*/
		//创建文件
		DateFileCreate();
	}
	
	private Element addLegend(Element rootElement) {
		Map<String,String> attributesMap=new LinkedHashMap<String, String>();
		Element legendNode=addChildElement(rootElement, "legend", attributesMap);
		attributesMap.put("label", "计划日期");
		attributesMap.put("color", "4567aa");
		addChildElement(legendNode, "item", attributesMap);
		
		attributesMap.clear();
		attributesMap.put("label", "实际日期");
		attributesMap.put("color", "999999");
		addChildElement(legendNode, "item", attributesMap);
		
		attributesMap.clear();
		attributesMap.put("label", "延迟");
		attributesMap.put("color", "FF5E5E");
		addChildElement(legendNode, "item", attributesMap);
		return legendNode;
	}
	private Element addStyles(Element rootElement) {
		Map<String,String> attributesMap=new LinkedHashMap<String, String>();
		Element stylesNode=addChildElement(rootElement, "styles", attributesMap);
		Element definitionNode=addChildElement(rootElement, "definition", attributesMap);
		Element applicationNode=addChildElement(rootElement, "application", attributesMap);
		
		attributesMap.put("type", "Font");
		attributesMap.put("name", "legendFont");
		attributesMap.put("size", "14");
		addChildElement(definitionNode, "style", attributesMap);
		
		attributesMap.clear();
		attributesMap.put("toObject", "legend");
		attributesMap.put("styles", "legendFont");
		addChildElement(applicationNode, "apply", attributesMap);
		
		return stylesNode;
	}
	//添加项目各阶段
	private void addProcesses(Element rootElement) throws SQLException {
		//添加processes节点
		Map<String,String> attributesMap=new LinkedHashMap<String, String>();
		attributesMap.put("headerText", "阶段");
		attributesMap.put("fontColor", "000000");
		attributesMap.put("fontSize", "12");
		attributesMap.put("isAnimated", "1");
		attributesMap.put("bgColor", "4567aa");
		attributesMap.put("headerVAlign", "bottom");
		attributesMap.put("headerAlign", "left");
		attributesMap.put("headerbgColor", "4567aa");
		attributesMap.put("headerFontColor", "ffffff");
		attributesMap.put("headerFontSize", "16");
		attributesMap.put("align", "left");
		attributesMap.put("isBold", "0");
		attributesMap.put("bgAlpha", "25");
		Element processes=addChildElement(rootElement, "processes", attributesMap);
		//添加dataTable节点
		attributesMap.clear();
		attributesMap.put("showProcessName", "1");
		attributesMap.put("nameAlign", "left");
		attributesMap.put("fontColor", "000000");
		attributesMap.put("fontSize", "10");
		attributesMap.put("vAlign", "right");
		attributesMap.put("align", "center");
		attributesMap.put("headerVAlign", "bottom");
		attributesMap.put("headerAlign", "left");
		attributesMap.put("headerbgColor", "4567aa");
		attributesMap.put("headerFontColor", "ffffff");
		attributesMap.put("headerFontSize", "16");
		Element dataTable=addChildElement(rootElement, "dataTable", attributesMap);
		
		//添加dataTable下的dataColumn子节点
		attributesMap.clear();
		attributesMap.put("bgColor","ffffff");
		attributesMap.put("headerText","计划开始");
		Element dataColumnPlanStarttime=addChildElement(dataTable, "dataColumn", attributesMap);
		
		attributesMap.clear();
		attributesMap.put("bgColor","ffffff");
		attributesMap.put("headerText","计划结束");
		Element dataColumnPlanEndtime=addChildElement(dataTable, "dataColumn", attributesMap);
		
		attributesMap.clear();
		attributesMap.put("bgColor","ffffff");
		attributesMap.put("headerText","实际开始");
		Element dataColumnActualStarttime=addChildElement(dataTable, "dataColumn", attributesMap);
		attributesMap.clear();
		attributesMap.put("bgColor","ffffff");
		attributesMap.put("headerText","实际结束");
		Element dataColumnActualEndtime=addChildElement(dataTable, "dataColumn", attributesMap);
		
		attributesMap.clear();
		attributesMap.put("bgColor","ffffff");
		attributesMap.put("headerText","计划工时");
		Element dataColumnPlanWorktime=addChildElement(dataTable, "dataColumn", attributesMap);
		
		attributesMap.clear();
		attributesMap.put("bgColor","ffffff");
		attributesMap.put("headerText","实际工时");
		Element dataColumnActualWorktime=addChildElement(dataTable, "dataColumn", attributesMap);
		
		//添加tasks节点
		attributesMap.clear();
		Element tasks=addChildElement(rootElement, "tasks", attributesMap);
		
		addProcessDetail(processes, dataColumnPlanStarttime,dataColumnPlanEndtime,dataColumnActualStarttime,dataColumnActualEndtime,dataColumnPlanWorktime,dataColumnActualWorktime, tasks);
	}
	private void addProcessDetail(Element processesNode, Element planStarttimeNode,Element planEndtimeNode,
								  Element actualStarttimeNode,Element actualEndtimeNode,
								  Element planWorktimeNode,Element actualWorktimeNode,
								  Element tasksNode) throws SQLException {
		T06_GanttDAO t06_GanttDAO = (T06_GanttDAO) context.getBean("t06_ganttDAO");
		List stageList=(List)t06_GanttDAO.getProjectStage(sqlMap, projectkey);
		this.rowNum=stageList.size();
		Iterator iter=stageList.iterator();
		Map projectTypeMap=cm.getMapFromCache("t21worktimeType");
		Map stageTemp;
		Map<String,String> attributesMap=new LinkedHashMap<String, String>();
		int processId=1;
		while(iter.hasNext()){
			//添加process子节点
			stageTemp=(Map)iter.next();
			attributesMap.clear();
			attributesMap.put("label", (String) projectTypeMap.get(stageTemp.get("STAGE")));
			attributesMap.put("id", String.valueOf(processId));
			addChildElement(processesNode, "process", attributesMap);
			//添加dataColumn下的text计划开始子节点
			attributesMap.clear();
			attributesMap.put("label",(String) stageTemp.get("PLANSTARTDAY"));
			addChildElement(planStarttimeNode, "text", attributesMap);
			
			//添加dataColumn下的text计划结不子节点
			attributesMap.clear();
			attributesMap.put("label",(String) stageTemp.get("PLANENDDAY"));
			addChildElement(planEndtimeNode, "text", attributesMap);
			
			//添加dataColumn下的text实际开始子节点
			attributesMap.clear();
			attributesMap.put("label",(String) stageTemp.get("ACTUALSTARTDAY"));
			addChildElement(actualStarttimeNode, "text", attributesMap);
			
			//添加dataColumn下的text实际结束子节点
			attributesMap.clear();
			attributesMap.put("label",(String) stageTemp.get("ACTUALENDDAY"));
			addChildElement(actualEndtimeNode, "text", attributesMap);
			
			//添加dataColumn下的text计划工时子节点
			attributesMap.clear();
			attributesMap.put("label",String.valueOf(stageTemp.get("PLANWORKTIME")));
			addChildElement(planWorktimeNode, "text", attributesMap);
			
			//添加dataColumn下的text实际工时子节点
			attributesMap.clear();
			attributesMap.put("label",String.valueOf(stageTemp.get("ACTUALWORKTIME")));
			addChildElement(actualWorktimeNode, "text", attributesMap);
			
			//添加tasks下的task结点
			
			attributesMap.clear();
			attributesMap.put("label", "计划日期");
			attributesMap.put("processId", String.valueOf(processId));
			attributesMap.put("start", (String) stageTemp.get("PLANSTARTDAY"));
			attributesMap.put("end", (String) stageTemp.get("PLANENDDAY"));
			attributesMap.put("id", String.valueOf(processId)+"-1");
			attributesMap.put("color", "4567aa");
			attributesMap.put("height", "32%");
			attributesMap.put("topPadding", "12%");
			addChildElement(tasksNode, "task", attributesMap);
			
			attributesMap.clear();
			if(null!=stageTemp.get("ACTUALSTARTDAY") && !"".equals(stageTemp.get("ACTUALSTARTDAY"))){
				attributesMap.put("label", "实际日期");
				attributesMap.put("processId",  String.valueOf(processId));
				attributesMap.put("start",  (String) stageTemp.get("ACTUALSTARTDAY"));
				attributesMap.put("end",  (String) stageTemp.get("ACTUALENDDAY"));
				attributesMap.put("id", String.valueOf(processId));
				attributesMap.put("color", "EEEEEE");
				attributesMap.put("alpha", "100");
				attributesMap.put("topPadding", "56%");
				attributesMap.put("height", "32%");
				attributesMap.put("isAnimated", "1");
				
				double planworktime=Double.parseDouble((String.valueOf(stageTemp.get("PLANWORKTIME"))));
				double actualworktime=Double.parseDouble((String.valueOf(stageTemp.get("ACTUALWORKTIME"))));
				//实际时间减计划时间,算超时百分比
				int rate=100;
				if(actualworktime>=planworktime){
					rate=(int) ((actualworktime-planworktime)/planworktime*100); 
					if(rate<=100){
						rate=100-rate;
					}else{
						rate=0;
					}
				}else{
					rate=100;
				}
				attributesMap.put("percentComplete", String.valueOf(rate));
				addChildElement(tasksNode, "task", attributesMap);
			}
			
			processId++;
		}
	}
	//创建文件
	private void DateFileCreate() throws IOException {
		OutputFormat formatter=OutputFormat.createPrettyPrint();
		formatter.setIndentSize(4);
		formatter.setEncoding("UTF-8");
		XMLWriter writer=new XMLWriter(new FileOutputStream(path),formatter);
		writer.write(document);
		writer.flush();
		writer.close();
	}
	
	//创建根
	private Element getRootElement(){
		document = DocumentHelper.createDocument();
		Element chart=document.addElement("chart");
		Map<String,String> rootAttributesMap=new LinkedHashMap<String, String>();
		rootAttributesMap.put("manageResize","1");
		rootAttributesMap.put("dateFormat","yyyy-MM-dd");
		rootAttributesMap.put("outputDateFormat","yyyy年MM月dd日");
		rootAttributesMap.put("ganttWidthPercent","70");
		rootAttributesMap.put("canvasBorderColor","999999");
		rootAttributesMap.put("canvasBorderThickness","0");
		rootAttributesMap.put("gridBorderColor","4567aa");
		rootAttributesMap.put("gridBorderAlpha","20");
		rootAttributesMap.put("ganttPaneDuration","3");
		rootAttributesMap.put("ganttPaneDurationUnit","m");
		for(String key:rootAttributesMap.keySet()){
			chart.addAttribute(key,rootAttributesMap.get(key));
		}
		return chart;
	}
	
	
	//2创建第一个categories结点
	private Element addCategoriesnode1(Element rootElement) throws SQLException{
		
		Map<String,String> attributesMap=new LinkedHashMap<String, String>();
		attributesMap.put("bgColor", "ffffff");
		Element categories=addChildElement(rootElement,"categories",attributesMap);

		attributesMap.clear();
		String start=(String)timeArea.get("MINDATE");
		attributesMap.put("start",getFormattedDate(start,"firstday"));

		String end=(String)timeArea.get("MAXDATE");
		attributesMap.put("end", getFormattedDate(end,"lastday"));
		attributesMap.put("label", cm.getMapFromCache("t06_project_plan").get(projectkey)+"进度表");
		attributesMap.put("fontColor", "1589da");
		attributesMap.put("align", "left");
		attributesMap.put("fontSize", "16");
		Element category=addChildElement(categories, "category", attributesMap);
		return category;
	}

	//3创建第二个categories结点
	private Element addCategoriesnode2(Element rootElement) throws SQLException{
		
		Map<String,String> attributesMap=new LinkedHashMap<String, String>();
		attributesMap.clear();
		attributesMap.put("bgColor", "4567aa");
		attributesMap.put("fontColor", "ff0000");
		Element categories=addChildElement(rootElement, "categories", attributesMap);
		
		attributesMap.clear();
		String start=(String)timeArea.get("MINDATE");
		attributesMap.put("start",getFormattedDate(start,"firstday"));
		String end=(String)timeArea.get("MAXDATE");
		attributesMap.put("end",getFormattedDate(end,"lastday"));
		attributesMap.put("label", "时间轴");
		attributesMap.put("alpha", "");
		attributesMap.put("font", "Verdana");
		attributesMap.put("align", "left");
		attributesMap.put("fontColor", "ffffff");
		attributesMap.put("fontSize", "16");
		Element category=addChildElement(categories, "category", attributesMap);
		return category;
	}
	//4创建第三个categories结点
	private Element addCategoriesnode3(Element rootElement) throws SQLException{
		
		Map<String,String> attributesMap=new LinkedHashMap<String, String>();
		attributesMap.put("bgColor", "ffffff");
		attributesMap.put("fontColor", "1288dd");
		attributesMap.put("fontSize", "10");
		attributesMap.put("align", "center");
		Element categories=addChildElement(rootElement, "categories", attributesMap);
		
		this.addTimeInterval(categories);
		
		
		Element category=null;
		
		return category;
	}
	private void addTimeInterval(Element categories){
		String start=(String)timeArea.get("MINDATE");
		String[] startParam=start.split("-");
		Calendar startCal=new GregorianCalendar();
		startCal.set(Calendar.YEAR, Integer.parseInt(startParam[0]));
		startCal.set(Calendar.MONTH, Integer.parseInt(startParam[1])-1);
		startCal.set(Calendar.DATE, 1);
		
		String end=(String)timeArea.get("MAXDATE");
		String[] endParam=end.split("-");
		Calendar endCal=new GregorianCalendar();
		endCal.set(Calendar.YEAR, Integer.parseInt(endParam[0]));
		endCal.set(Calendar.MONTH, Integer.parseInt(endParam[1])-1);
		endCal.set(Calendar.DATE, 1);
		
		System.out.println("开始年月"+formatFullDate(startCal));
		System.out.println("结束年月"+formatFullDate(endCal));
		
		Map<String,String> attributesMap=new LinkedHashMap<String, String>();
		while(startCal.before(endCal)){
			startCal.set(Calendar.DATE, 1);
			System.out.println("添加start节点"+formatFullDate(startCal));
			attributesMap.put("start", formatFullDate(startCal));
			startCal.set(Calendar.DATE,startCal.getActualMaximum(Calendar.DATE));
			System.out.println("添加end节点"+formatFullDate(startCal));
			attributesMap.put("end", formatFullDate(startCal));
			attributesMap.put("label",formatShortDate(startCal));
			Element category=addChildElement(categories, "category", attributesMap);
			startCal.add(Calendar.MONTH, 1);
			System.out.println("下移一个月后"+formatFullDate(startCal));
			attributesMap.clear();
		}
		startCal.set(Calendar.DATE, 1);
		attributesMap.put("start", formatFullDate(startCal));
		startCal.set(Calendar.DATE,startCal.getActualMaximum(Calendar.DATE));
		attributesMap.put("end", formatFullDate(startCal));
		attributesMap.put("label",formatShortDate(startCal));
		Element category=addChildElement(categories, "category", attributesMap);
	}
	
	private Element addChildElement(Element parentElement,String childElementName,Map<String,String> childElementAttributesMap){
		Element childElement=parentElement.addElement(childElementName);
		for(String key:childElementAttributesMap.keySet()){
			childElement.addAttribute(key,childElementAttributesMap.get(key));
		}
		return childElement;
	}
	private String getFormattedDate(String dateStr,String balance){
		String[] dateParam=dateStr.split("-");
		Calendar cal=new GregorianCalendar();
		cal.set(Calendar.YEAR, Integer.parseInt(dateParam[0]));
		cal.set(Calendar.MONTH, Integer.parseInt(dateParam[1])-1);
		if(balance.equals("firstday")){
			cal.set(Calendar.DATE, 1);
		}else if(balance.equals("lastday")){
			cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE));
		}
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		return sdf.format(new Date(cal.getTimeInMillis()));
	}
	//得到项目时间区间
	private void getTimeArea() throws SQLException{
		T06_GanttDAO t06_GanttDAO = (T06_GanttDAO) context.getBean("t06_ganttDAO");
		timeArea=(Map)t06_GanttDAO.getMinMaxDate(sqlMap, projectkey);
	}
	private String formatFullDate(Calendar cal){
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		return sdf.format(new Date(cal.getTimeInMillis()));
	}
	private String formatShortDate(Calendar cal){
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM");
		return sdf.format(new Date(cal.getTimeInMillis()));
	}
	/*待实现*/
	private Element addMilestones(Element rootElement) {
		return null;
	}
	/*待实现*/
	private Element addConnectors(Element rootElement) {
		return null;
	}
	/*用于jsp页面定义fusionChart的高度*/
	public double getFusionChartHeigth() {
		return 165+rowNum*25;
	}
}
 JSP页面

<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>

<html>
	<head>
		<%@ include file="../../bmp/platform/common/style_include.jsp"%>
		<link
			href="<%=request.getContextPath()%>/skin/<%=style%>/css/awp_base.css"
			rel="stylesheet" type="text/css">

		<SCRIPT LANGUAGE="JavaScript"
			src="<%=request.getContextPath()%>/js/awp_base.js"></SCRIPT>
		<link rel="stylesheet" href="<%=request.getContextPath()%>/css/css_all.css" type="text/css">
		<script language="JavaScript" src="<%=request.getContextPath()%>/js/fusionchart/FusionCharts.js"></script>
		<script language="JavaScript" src="<%=request.getContextPath()%>/js/fusionchart/jquery-1.6.2.min.js"></script>
		<script language="javascript">
			jQuery.noConflict();

			jQuery(function() {
				var winWidth = 0; 
				var winHeight = 0;
				if(window.innerWidth){
					winWidth = window.innerWidth;
				}else if ((document.body) && (document.body.clientWidth)){
					winWidth = document.body.clientWidth;
				}
				//获取窗口高度
				if(window.innerHeight){
					winHeight = window.innerHeight;
				}else if((document.body) && (document.body.clientHeight)){
					winHeight = document.body.clientHeight; 
				}
				//通过深入Document内部对body进行检测,获取窗口大小 
				if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth) 
				{ 
					winHeight = document.documentElement.clientHeight; 
					winWidth = document.documentElement.clientWidth; 
				} 
				var currentRenderer = 'flash';
				var chartObj;
				FusionCharts.setCurrentRenderer(currentRenderer);
				chartObj = new FusionCharts({
					swfUrl : "<%=request.getContextPath()%>/charts/Gantt.swf",
					width : winWidth+210,
					height : '<c:out value="${requestScope.fusionChartHeight}"></c:out>',
					id : 'sampleChart',
					dataSource : "<%=request.getContextPath()%>/projectGannt.xml",
					dataFormat : FusionChartsDataFormats.XMLURL,
					renderAt : 'chart1div'
				}).render();
			});
		</script>
	</head>
	<body>
		<div id='content'>
				<div class='awp_title'>
					<table>
						<tr>
							<td>
								&nbsp;甘特图
							</td>
							<td align="right" class="td2">
								<input type="button" name="btsearch2" value="查 找"
									onclick="btnDisplayHidden(this, 'searchtable')" />
								<input type="button" name="new" id="new" value="申 请" />
								<input type="button" name="delete" id="delete" value="删 除" />
							</td>
						</tr>
					</table>
				</div>
		</div>
		<div id="chart1div">
		</div>
	</BODY>
</html>
   ibatis映射文件

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> 
 
<sqlMap namespace="T06_Gantt">
  <!-- 得到项目计划和工时记录的最小的最大日期 -->
  <statement id="getMinMaxTime" parameterClass="java.lang.String" resultClass="java.util.HashMap"> 
	select min(datearea) mindate,max(datearea) maxdate from (
	select t1.workday datearea from t21_worktime t1 where t1.isproject='1'
	and t1.projectid=#projectkey#
	union
	select t2.plbegindate datearea from t06_work_schedule t2 where t2.projectkey=#projectkey#
	union
	select t3.plendate datearea from t06_work_schedule t3 where t3.projectkey=#projectkey#)
  </statement>
  <!-- 获取项目计划阶段的信息 -->
  <statement id="getProjectStage" parameterClass="java.lang.String" resultClass="java.util.HashMap"> 
	select t1.ptype stage,
       t1.plbegindate planstartday,
       t1.plendate planendday,
       min(t2.workday) actualstartday,
       max(t2.workday) actualendday,
       t1.plwtcounts planworktime,
       nvl(sum(t2.workcounts + t2.directorcounts + t2.managerconts),0) actualworktime
  from t06_work_schedule t1
  left join t21_worktime t2 on t1.ptype = t2.type
                           and t1.projectkey = t2.projectid
                           and t2.isproject = '1'
                           and t1.projectkey = #projectkey#
 group by t1.ptype, t1.plbegindate, t1.plendate, t1.plwtcounts
 order by t1.ptype
  </statement> 
</sqlMap> 

 

 

  • 大小: 165.6 KB
分享到:
评论

相关推荐

    FusionCharts 甘特图制作案例

    在IT领域,FusionCharts是一款强大的JavaScript图表库,它提供了丰富的图表类型,包括甘特图。甘特图是一种常用于项目管理和任务调度的图形表示工具,可以清晰地展示任务的开始时间、结束时间以及进度。在这个...

    FusionChart甘特图控件

    **FusionChart甘特图控件详解** FusionChart是一款强大的图表库,它以其美观的图形和丰富的功能在IT行业中广泛应用。在这个特定的场景中,我们关注的是FusionChart用于展示项目进度管理的甘特图控件。甘特图是一种...

    vue制作甘特图项目源码

    本项目主要面向需要使用vue来实现甘特图需求的开发者,项目实现了节点的拖拽,并用导航线连接各个节点,实现甘特图进度动态更改,导航线可以随着节点的拖拽动态变换位置,并可以新增、删除和修改任务 本项目只提供了...

    flash xml fusioncharts网页波动折线图走势

    FusionCharts是一款强大的JavaScript图表库,它支持超过90种不同类型的图表,包括折线图、柱状图、饼图、甘特图等,适用于各种数据展示需求。FusionCharts采用SWF(Flash)格式呈现图表,同时利用XML作为数据传输...

    FusionCharts 导出内容+图片到word

    在IT行业中,FusionCharts是一款强大的JavaScript图表库,它提供了丰富的图表类型和高度自定义的选项,用于在网页上创建互动式、美观的数据可视化效果。本文将深入探讨如何利用FusionCharts实现内容与图片的导出功能...

    FusionCharts画示例图

    FusionCharts 提供了多种图表类型的示例,包括柱状图、折线图、饼图、地图等。这些示例展示了如何配置不同类型的图表,以及如何添加交互功能,如点击事件、工具提示等。例如: 1. 柱状图:展示分类数据,适用于比较...

    FusionCharts 图形报表展示

    1. **图表类型**:FusionCharts支持多种图表类型,包括折线图、柱状图、饼图、散点图、热力图、甘特图等,满足不同数据展示需求。 2. **数据格式**:数据可以以XML、JSON或纯JavaScript数组的形式提供,方便与后端...

    FusionCharts柱状图_jsp

    【FusionCharts柱状图_jsp】是一个关于在Java服务器页面(JSP)中使用FusionCharts库创建柱状图表的实例源代码。FusionCharts是一款强大的JavaScript图表库,能够帮助开发者生成交互式、视觉吸引人的图表。在这个...

    FusionCharts统计图导出为图片或pdf

    本文将深入探讨FusionCharts如何实现统计图的导出功能,包括将其保存为图片和PDF格式。 首先,我们需要理解FusionCharts的基本工作原理。FusionCharts利用HTML5的Canvas元素或者SVG(Scalable Vector Graphics)...

    FusionCharts_柱状图详解

    ### FusionCharts柱状图详解:深入理解功能属性与图表配置 FusionCharts是一款强大的JavaScript图表库,被广泛应用于Web应用程序中以实现数据可视化。其中,柱状图是其最为常见且直观的数据展示方式之一,特别适合...

    Fusioncharts 图表

    除了上述图表类型,FusionCharts还提供了多种复杂图表,如热力图、瀑布图、甘特图等,这些图表在商业智能、项目管理等领域有着广泛的应用。例如,甘特图可以清晰地展示任务的进度和依赖关系,热力图则能突出显示数据...

    FusionCharts 绘制折线图、矩形图、雷达图,导出图片

    【注意】只适合C#。 资源包中包含一个现成的实例; 最新FusionCharts.dll; FusionCharts.js; 多种.SWF文件。 可绘制折线图、矩形图 、雷达图及其他多种图片,导出图片。

    饼形图柱形图fusioncharts 实例

    FusionCharts 是一款强大的 JavaScript 图表库,它提供了丰富的图表类型,包括饼形图和柱形图,适用于各种业务场景。下面我们将详细探讨 FusionCharts 的饼形图和柱形图实例,以及如何使用它们。 饼形图是一种以...

    FusionCharts区域图例子

    在这个“FusionCharts区域图例子”中,我们重点探讨的是区域图的实现和应用。 区域图是数据可视化中的一个重要类型,它通过填充颜色来展示数据区间,通常用于显示连续数据的变化情况,如时间序列数据。在...

    FusionCharts_XT_Evaluation

    **FusionCharts XT Evaluation** 是一个强大的数据可视化工具,专为开发者设计,便于构建互动式、丰富多彩的图表。它能够将结构化的数据,无论是JSON格式还是XML格式,转化为直观易懂的图形,如饼状图、条形图、折线...

    玩转FusionCharts:Y轴数字形式(如去掉K)

    ### 玩转FusionCharts:Y轴数字形式(如去掉K) 在处理图表时,我们经常需要对显示的数据格式进行调整,以更好地满足展示需求或提升用户体验。本文将详细介绍如何利用FusionCharts这一强大的图表工具来实现Y轴数字...

    FusionCharts_Evaluation-统计图

    FusionCharts支持多种图表类型,包括但不限于折线图、柱状图、饼图、散点图、热力图、甘特图等。这些图表在商业智能、数据分析、项目管理等领域中都有广泛应用。例如,折线图可以清晰地展示趋势变化,柱状图用于比较...

    FusionCharts 各类统计图制作

    FusionCharts是一款强大的JavaScript图表库,它提供了丰富的统计图表类型,包括柱状图、饼图、线图、区域图、甘特图等,用于数据可视化。在这个“FusionCharts各类统计图制作”的案例中,我们将深入探讨如何使用...

    免费漂亮的Flash图形报表-FusionCharts Free V2.1

    FusionCharts的核心功能在于其丰富的图表类型,包括折线图、柱状图、饼图、甘特图、散点图等,适用于各种数据分析场景。用户可以根据实际需求选择合适的图表类型,将数据库或CSV文件中的数据转换为生动的视觉表示。...

Global site tag (gtag.js) - Google Analytics