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> 甘特图 </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>
相关推荐
在IT领域,FusionCharts是一款强大的JavaScript图表库,它提供了丰富的图表类型,包括甘特图。甘特图是一种常用于项目管理和任务调度的图形表示工具,可以清晰地展示任务的开始时间、结束时间以及进度。在这个...
**FusionChart甘特图控件详解** FusionChart是一款强大的图表库,它以其美观的图形和丰富的功能在IT行业中广泛应用。在这个特定的场景中,我们关注的是FusionChart用于展示项目进度管理的甘特图控件。甘特图是一种...
本项目主要面向需要使用vue来实现甘特图需求的开发者,项目实现了节点的拖拽,并用导航线连接各个节点,实现甘特图进度动态更改,导航线可以随着节点的拖拽动态变换位置,并可以新增、删除和修改任务 本项目只提供了...
FusionCharts是一款强大的JavaScript图表库,它支持超过90种不同类型的图表,包括折线图、柱状图、饼图、甘特图等,适用于各种数据展示需求。FusionCharts采用SWF(Flash)格式呈现图表,同时利用XML作为数据传输...
在IT行业中,FusionCharts是一款强大的JavaScript图表库,它提供了丰富的图表类型和高度自定义的选项,用于在网页上创建互动式、美观的数据可视化效果。本文将深入探讨如何利用FusionCharts实现内容与图片的导出功能...
FusionCharts 提供了多种图表类型的示例,包括柱状图、折线图、饼图、地图等。这些示例展示了如何配置不同类型的图表,以及如何添加交互功能,如点击事件、工具提示等。例如: 1. 柱状图:展示分类数据,适用于比较...
1. **图表类型**:FusionCharts支持多种图表类型,包括折线图、柱状图、饼图、散点图、热力图、甘特图等,满足不同数据展示需求。 2. **数据格式**:数据可以以XML、JSON或纯JavaScript数组的形式提供,方便与后端...
【FusionCharts柱状图_jsp】是一个关于在Java服务器页面(JSP)中使用FusionCharts库创建柱状图表的实例源代码。FusionCharts是一款强大的JavaScript图表库,能够帮助开发者生成交互式、视觉吸引人的图表。在这个...
本文将深入探讨FusionCharts如何实现统计图的导出功能,包括将其保存为图片和PDF格式。 首先,我们需要理解FusionCharts的基本工作原理。FusionCharts利用HTML5的Canvas元素或者SVG(Scalable Vector Graphics)...
### FusionCharts柱状图详解:深入理解功能属性与图表配置 FusionCharts是一款强大的JavaScript图表库,被广泛应用于Web应用程序中以实现数据可视化。其中,柱状图是其最为常见且直观的数据展示方式之一,特别适合...
除了上述图表类型,FusionCharts还提供了多种复杂图表,如热力图、瀑布图、甘特图等,这些图表在商业智能、项目管理等领域有着广泛的应用。例如,甘特图可以清晰地展示任务的进度和依赖关系,热力图则能突出显示数据...
【注意】只适合C#。 资源包中包含一个现成的实例; 最新FusionCharts.dll; FusionCharts.js; 多种.SWF文件。 可绘制折线图、矩形图 、雷达图及其他多种图片,导出图片。
FusionCharts 是一款强大的 JavaScript 图表库,它提供了丰富的图表类型,包括饼形图和柱形图,适用于各种业务场景。下面我们将详细探讨 FusionCharts 的饼形图和柱形图实例,以及如何使用它们。 饼形图是一种以...
在这个“FusionCharts区域图例子”中,我们重点探讨的是区域图的实现和应用。 区域图是数据可视化中的一个重要类型,它通过填充颜色来展示数据区间,通常用于显示连续数据的变化情况,如时间序列数据。在...
**FusionCharts XT Evaluation** 是一个强大的数据可视化工具,专为开发者设计,便于构建互动式、丰富多彩的图表。它能够将结构化的数据,无论是JSON格式还是XML格式,转化为直观易懂的图形,如饼状图、条形图、折线...
### 玩转FusionCharts:Y轴数字形式(如去掉K) 在处理图表时,我们经常需要对显示的数据格式进行调整,以更好地满足展示需求或提升用户体验。本文将详细介绍如何利用FusionCharts这一强大的图表工具来实现Y轴数字...
FusionCharts支持多种图表类型,包括但不限于折线图、柱状图、饼图、散点图、热力图、甘特图等。这些图表在商业智能、数据分析、项目管理等领域中都有广泛应用。例如,折线图可以清晰地展示趋势变化,柱状图用于比较...
FusionCharts是一款强大的JavaScript图表库,它提供了丰富的统计图表类型,包括柱状图、饼图、线图、区域图、甘特图等,用于数据可视化。在这个“FusionCharts各类统计图制作”的案例中,我们将深入探讨如何使用...
FusionCharts的核心功能在于其丰富的图表类型,包括折线图、柱状图、饼图、甘特图、散点图等,适用于各种数据分析场景。用户可以根据实际需求选择合适的图表类型,将数据库或CSV文件中的数据转换为生动的视觉表示。...