FusionCharts简单教程(一) + 自己风格的fusionchar写法


由于项目需求需要做一个报表,选择FusionCharts作为工具使用。由于以前没有接触过报表,网上也没有比较详细的fusionCharts教程,所以决定好好研究FusionCharts,同时做一个比较简单的教程提供参考。由于能力有限(应届毕业生的菜鸟而已),所以教程(学习笔记而已)不免会有错误,望别喷,望指正。当然肯定避免不了会参考其他资料的。

一、FusionCharts简介和安装使用                                                                                    

        1.1、简介

       FusionCharts是InfoSoft Global公司的一个产品,而FusionCharts Free则是FusionCharts提供的一个免费版本,虽然免费,功能依然强大,图形类型依然丰富。这里介绍了都是基于FusionCharts Free的。

       FusionCharts free 是一个跨平台,跨浏览器的flash图表组件解决方案,能够被 ASP、.NET, PHP, JSP, ColdFusion, Ruby on Rails, 简单 HTML 页面甚至PPT调用。我们不需要知道任何Flash的知识,只需要了解你所用的编程语言而已。

       FusionCharts功能强大,那么它到底能够做什么呢?下面一一展示。

       3D/2D 柱形图



       曲线图



       3D/2D饼图、环图




       区域图


       堆栈图


       联合图


       上面只是一些功能的展示,FusionCharts还能够做更多的事情,这里就不一一介绍了。下面介绍如何安装使用FusionCharts。

       1.2 文档结构

       将下载的FusionCharts解压到任意目录,得到的解压文件夹里面会包含类似于此的文档结构。


          Charts :里面包含着所有的SWF文件,如果你的Web项目需要创建图像,则导入相应的SWF文件即可。

          Code :里面包含了所有的示例代码。

          Contents :包含了文档,也就是API,包含了FusionCharts的使用方法。

          Gallery :包含了一些图像的创建例子。

          JSClass:FusionCharts javascript文件就放在这个目录下,这些文件能够帮组我们以一种友好的方式将图像插入到页面中。

       1.3安装使用

       在了解了FusionCharts的文档结构后,下面来讲解如何将FusionCharts应用到应用程序中。其实FusionCharts的使用方法非常简单。只需要三个步骤就可以搞定。

       1、 导入你要创建图像相对应的SWF文件。

       2、 编写XML数据文件。

       3、 编写HTML文件,这个文件要包含显示图像的相应代码。


       二、我的第一个FusionCharts                                                                                       

       介绍了这么久,终于可以创建第一个图像了。我将以一种比较简单的方式来创建一个3D柱状的图形,用来显示每个月某件商品的销售情况。

       2.1、创建工程

       新建文件夹,命名为FusionCharts,然后在新建两个文件夹分别命名为FusionCharts、datas。这两个文件分别用于存放SWF文件和xml数据文件。

       2.2、导入文件

       将相应的3D柱状图像的SWF:Column3D.swf复制到FusionCharts文件夹中。

       2.3、创建XML数据文件

    创建XML文件:Data1.xml,并将其放入到datas文件夹中。文件内容如下:

  1. <chart yAxisName='销售个数' caption='2012年年度销售情况统计分析' useRoundEdges='1' bgColor='FFFFFF,FFFFFF' showBorder='0'>  
  2.     <set label='一月' value='25000'  />   
  3.     <set label='二月' value='35000' />   
  4.     <set label='三月' value='42300' />   
  5.     <set label='四月' value='35300' />   
  6.     <set label='五月' value='31300' />  
  7.     <set label='六月' value='25000'  />   
  8.     <set label='七月' value='35000' />   
  9.     <set label='八月' value='42300' />   
  10.     <set label='九月' value='35300' />   
  11.     <set label='10月' value='31300' />  
  12.     <set label='11月' value='25000'  />   
  13.     <set label='12月' value='35000' />   
  14. </chart>  
<chart yAxisName='销售个数' caption='2012年年度销售情况统计分析' useRoundEdges='1' bgColor='FFFFFF,FFFFFF' showBorder='0'>
    <set label='一月' value='25000'  /> 
    <set label='二月' value='35000' /> 
    <set label='三月' value='42300' /> 
    <set label='四月' value='35300' /> 
    <set label='五月' value='31300' />
    <set label='六月' value='25000'  /> 
    <set label='七月' value='35000' /> 
    <set label='八月' value='42300' /> 
    <set label='九月' value='35300' /> 
    <set label='10月' value='31300' />
    <set label='11月' value='25000'  /> 
    <set label='12月' value='35000' /> 
</chart>

       对于这个XML文件这里简单介绍一下。

       <chart>元素作为root元素,他有一些基本属性,如:设置x、y轴名称,报表标题、数值格式。在<chart>元素中有很多的<set>元素,这个元素用来描述设定的数据,label表示名称、value表示值。

       2.4、编写HTML文件代码

  1.     <html>     
  2.        <head>     
  3.           <title>My First FusionCharts</title>     
  4.        </head>     
  5.        <body bgcolor="#ffffff">     
  6.           <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="600" height="500" id="Column3D" >     
  7.              <param name="movie" value="../FusionCharts/Column3D.swf" />     
  8.              <param name="FlashVars" value="&dataURL=../datas/Data.xml&chartWidth=600&chartHeight=500">     
  9.              <param name="quality" value="high" />     
  10.             <embed src="../FusionCharts/Column3D.swf" flashVars="&dataURL=../datas/Data.xml&chartWidth=600&chartHeight=500" quality="high" width="600" height="500" name="Column3D" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />     
  11.           </object>     
  12.     </body>     
  13. </html>   
	<html>   
	   <head>   
	      <title>My First FusionCharts</title>   
	   </head>   
	   <body bgcolor="#ffffff">   
	      <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="600" height="500" id="Column3D" >   
	         <param name="movie" value="../FusionCharts/Column3D.swf" />   
	         <param name="FlashVars" value="&dataURL=../datas/Data.xml&chartWidth=600&chartHeight=500">   
	         <param name="quality" value="high" />   
			<embed src="../FusionCharts/Column3D.swf" flashVars="&dataURL=../datas/Data.xml&chartWidth=600&chartHeight=500" quality="high" width="600" height="500" name="Column3D" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />   
	      </object>   
	</body>   
</html> 


       生成的图像:


       下篇将介绍如何使用js来加载FusionCharts和使用dataXML加载数据。






以下是宁一种写法:

<%@ page pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%>
 <nbean:nquery query="query1"  var="xkzsqqktj" scope="request" key="XH" orderBy="NUM" way="DESC" paged="false" length="10" pvar="P_PAGEINFO_VAR" pscope="request" />
<script type="text/javascript">
 function showChartFlashXkzsqqkTjPie(){
  try{
      var width=document.getElementById("xkzsqtjPieChar").scrollWidth;
    var chart = new FusionCharts( '${ctx}/pages/platform/chart/Pie3D.swf','qzxkz',width, 200,'0','1');
   chart.setDataXML($('#xkzsqqktjdata').html());
   chart.render('xkzsqtjPieChar');
  }catch(e){
   alert(e.message);
  }
 }
 
 function showChartFlashXkzsqqkTjZhu(){
  try{
    var width=document.getElementById("xkzsqtjZhuChar").scrollWidth;
    var chart = new FusionCharts( '${ctx}/pages/platform/chart/Column3D.swf','qzxkzZhu', width, 200,'0','1');
   chart.setDataXML($('#xkzsqqktjZhudata').html());
   chart.render('xkzsqtjZhuChar');
  }catch(e){
   alert(e.message);
  }
 }
</script>
 <c:set var="xkzsqqktjZhu">
<?xml version="1.0" encoding="GBK"?>
<graph baseFont="宋体" 
    baseFontSize="12" 
    alternateHGridColor="ff5904" 
    divLineColor="ff5904" 
    showNames="1" 
    showValues="1" 
    showAlternateHGridColor="1" 
    alternateHGridAlpha="5" 
    divLineAlpha="20" 
    formatNumber="1" 
    formatNumberScale="0" 
    decimalPrecision="0" 
    chartBottomMargin="0" 
    chartTopMargin="10" 
    pieSliceDepth='15'
<%--    bgColor="F2F2F2"--%>
     >
 <c:set value="0"  var="ZS" scope="request" />
 <c:forEach items="${xkzsqqktj}" var="item" varStatus="stat">
   <c:set value="${item.map.HAS eq 'YES' ? ZS+item.map.NUM : ZS + 0}"  var="ZS" scope="request" />
     <set name="${item.map.SQLB }" value="${item.map.HAS eq 'YES' ? item.map.NUM : 0}"
       link="javascript:showXkzsqqkTjList('${item.map.SQLBDM}')" 
    color="${colors[stat.index]}" ></set>
   </c:forEach>
</graph>
 </c:set>

 <c:set var="xkzsqqktjPie">
<?xml version="1.0" encoding="GBK"?>
<graph baseFont="宋体" 
    baseFontSize="12" 
    alternateHGridColor="ff5904" 
    divLineColor="ff5904" 
    showNames="1" 
    showValues="1" 
    showAlternateHGridColor="1" 
    alternateHGridAlpha="5" 
    divLineAlpha="20" 
    formatNumber="1" 
    formatNumberScale="0" 
    decimalPrecision="0" 
    chartBottomMargin="0" 
    chartTopMargin="10" 
    pieSliceDepth='15'
<%--    bgColor="F2F2F2"--%>
     >
 <c:forEach items="${xkzsqqktj}" var="item" varStatus="stat">
      <set name="${item.map.SQLB }" value="${item.map.HAS eq 'YES' ? item.map.NUM : 0 }"
     color="${colors[stat.index]}" >
     </set>
   </c:forEach>
</graph>
 </c:set>
 <div id="xkzsqqktjZhudata" style="display:none;" οndblclick="">
   ${xkzsqqktjZhu}
</div>
 
<div id="xkzsqqktjdata" style="display:none;">
   ${xkzsqqktjPie}
</div>
   <!--item-3 start-->
   <div class="items-3 clearfix" style="position:relative;" >
    <div class="gap"></div>
    <div style="width:100%" class="fl">
     <div class="x-topbar clearfix" style="">
      <span class="x-topbar-l fl"></span>
      <span class="x-topbar-c fl">许可证申请情况统计</span>
      <span class="x-topbar-r fl"></span>
      <span class="fr help"></span>
      <span class="tipsbox-x">
       <div style="width:90%;padding-top:5px;"><p>${requestScope.q_ND1}许可证申请情况统计</p></div>
      </span>
     </div>
     <div class="x-content" style="height:245px;">
      <div class="fl" style="width:49%;margin-top:10px;">
       <span class="msg-gre fl"><em>总数:${ZS }</em></span><br/>
       <div id="xkzsqtjPieChar" style="width: 75%; float: left;">
      </div>
      </div>
      <div class="fl" style="width:49%;height:245px;margin-top:20px;">
          <div id="xkzsqtjZhuChar"></div>
      </div>
     </div>
    </div>
  </div>
 <script type="text/javascript">
 //调用显示
 showChartFlashXkzsqqkTjPie();
 showChartFlashXkzsqqkTjZhu();
 function showXkzsqqkTjList(data){
<%--   top.asyncbox.open({--%>
<%--          id : 'TJ',--%>
<%--          title:'许可证申请情况统计',--%>
<%--           url : ',--%>
<%--           width : 900,--%>
<%--           height : 560,--%>
<%--     drag:true,--%>
<%--     modal:true,--%>
<%--     ismax:true,--%>
<%--    callback : function(action,iframe,returnValue){--%>
<%--     }--%>
<%--   })--%>
<%----%>
  }
 </script>








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值