fusionCharts的詳細解析與應用

一、fusioncharts的介紹:

       FusionCharts是一個Flash的圖表組件,它可以用來製作數據動畫圖表,其中動畫效果用的是Adob  e Flash 8 (原Macromedia Flash的)製作的flash , FusionCharts可用於任何網頁的腳本語言類似於HTML , .NET,ASP , JSP技術的, PHP , ColdFusion等,提供互動性和強大的圖表。使用XML作爲其數據接口, FusionCharts充分利用流體美麗的Flash創建緊湊,互動性和視覺逮捕圖。實質是用來顯示圖表的工具。


二、fusioncharts的安裝於應用

1. 在web項目目錄下新建一個文件夾( 如FusionCharts),並把所有的SWF 文件都拷貝到這個文件夾裏。
2. 在頁面導入FusionCharts.js 文件,如:
<script type="text/javascript" src="FusionCharts.js"></script>
3. js加載數據生成報表(有兩種方法)
方法一:xml文件引用法
(1)定義一個固定格式的xml文件(以Data.xml爲例)
Date.xml的內容如下:
<graph caption='每月銷售額柱形圖' xAxisName='月份' yAxisName='Units' showNames='1' decimalPrecision='0' formatNumberScale='0'>  
   <set name='一月' value='462' color='AFD8F8' />  
   <set name='二月' value='857' color='F6BD0F' />  
   <set name='三月' value='671' color='8BBA00' />  
   <set name='四月' value='494' color='FF8E46' />  
   <set name='五月' value='761' color='008E8E' />  
   <set name='六月' value='960' color='D64646' />  
   <set name='七月' value='629' color='8E468E' />  
   <set name='八月' value='622' color='588526' />  
   <set name='九月' value='376' color='B3AA00' />  
   <set name='十月' value='494' color='008ED6' />  
<set name='十一月' value='761' color='9D080D' />  
   <set name='十二月' value='960' color='A186BE' />  
</graph> 
(2) js加載方法,代碼如下:
<div id=”chartdiv1”></div>
<script type="text/javascript">  
    var myChart2 = new FusionCharts("../FusionCharts/FCF_Column3D.swf","myChartId2", "600","300");    
     myChart2.setDataURL("Data.xml");    
     myChart2.render("chartdiv1");   
 </script> 
方法二:字符串加載法
(1) 定義一個有固定格式的字符串,即可以將上述xml文件組合成字符串
var dataXml = “<graph caption='每月銷售額柱形圖' xAxisName='月份' yAxisName='Units' showNames='1' decimalPrecision='0' formatNumberScale='0'><set name='一月' value='462' color='AFD8F8' /><set name='二月' value='857' color='F6BD0F' /><set name='三月' value='671' color='8BBA00' /><set name='四月' value='494' color='FF8E46' /><set name='五月' value='761' color='008E8E' /><set name='六月' value='960' color='D64646' /><set name='七月' value='629' color='8E468E' /><set name='八月' value='622' color='588526' /><set name='九月' value='376' color='B3AA00' /><set name='十月' value='494' color='008ED6' /><set name='十一月' value='761' color='9D080D' /><set name='十二月' value='960' color='A186BE' /></graph>”;
(2)js加載方法,代碼如下:
<div id=”chartdiv1”></div>
<script type="text/javascript">  
    var myChart2 = new FusionCharts("../FusionCharts/FCF_Column3D.swf","myChartId2", "600","300");    
     myChart2.setDataURL(dataXml);    
     myChart2.render("chartdiv1");   
 </script>
 解析:操作步驟:
<1>建立對象:
用四個參數建立了一個FusionCharts對象,
    var myChart = new FusionCharts("../FusionCharts/FCF_Column3D.swf", "myChartId", "600", "500"); 
      第一個參數是SWF文件的地址。
      第二個是圖形的id。這個id可以隨便叫什麼,但是要注意,當一個頁面裏有多個圖形的時候,這個id一定要是唯一的。
      第三個參數是圖形的寬。
      第四個參數是圖形的高。
<2> 加載數據:
第一種加載方法需要設置數據文件的地址。如:
        myChart.setDataURL("Data.xml");  
第二種加載方法需要設置對應的字符串。如:
    myChart2.setDataURL(dataXml); //dataXml爲字符串
 <3> 把圖形渲染在指定的地方。
myChart.render("chartdiv");  
   "chartdiv"就是前面的DIV的id,這就表示把圖形render到"chartdiv",即Flash圖形就出現在這個id爲"chartdiv1"的DIV裏。


三、實例解析:

一下這個程序是自己參考別人的程序修改而來,這個程序能夠更好的顯示fusioncharts的功能。

(1)、html文件比如名爲test。html內容如下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
<div id="divBarChart">
</div>
<div id="divPieChart">
</div>
<div id="divPieChart2">
</div>
    <script type="text/javascript" src="FusionChart/FusionCharts.js"></script>
    <script type="text/javascript">
        function ConstructHttpString(myURL) {
            myURL += "?rnd=" + new Date().getTime();
            return encodeURIComponent(myURL.toString());
        }
        //畫圖(以指定 xml格式文件爲數據源)  
        function DrawChart(divId,flashFileName,width,height,xmlUrl) {
            var myChartId = new Date().getTime();
            var myChart = new FusionCharts("FusionChart/" + flashFileName, myChartId, width, height);
            //myChart.setDataURL("data.xml"); //獲取xml格式數據源
            myChart.setDataURL(ConstructHttpString(xmlUrl)); //獲取xml格式數據源
            myChart.set
            myChart.addParam("wmode", "Opaque");
            myChart.render(divId);
        }


        //畫圖 (以指定 xml格式字符串爲數據源)   
        function DrawChart2(divId, flashFileName, width, height) {
            var myChartId = new Date().getTime();
            var myChart = new FusionCharts("FusionChart/" + flashFileName, myChartId, width, height);
            myChart.setDataXML('<chart caption="逗你玩" numberPrefix="$"><set value="60" label="Item A" color="AFD8F8" /><set value="17" label="Item B" color="F6BD0F" /><set value="23" label="Item C" color="8BBA00" isSliced="1" /></chart>');
            myChart.addParam("wmode", "Opaque");
            myChart.render(divId);
        }
        //柱狀圖
        DrawChart("divBarChart", "StackedColumn2D.swf", "831", "396", "dataXml.xml");
        //餅狀圖
       DrawChart("divPieChart", "Pie2D.swf", "831", "396", "data.xml");
        //餅狀圖
       // DrawChart2("divPieChart", "Pie2D.swf", "500", "396");
         //DrawChart2("divBarChart", "Pie2D.swf", "500", "396");
//兩種方法可以顯示餅圖
    </script>
</body>
</html>


其中的兩個函數:解釋如下

setDataURL:設置數據源Url,以指定 xml格式文件爲數據源

setDataXML:設置數據源xml內容,以指定 xml格式字符串爲數據源


(2)爲data文件,本例爲data。xml於dataXml。xml兩個數據文件,一個用來顯示柱形圖的數據文件,另外一個是用來顯示餅圖的數據文件

data。xml的內容如下:

<?xml version="1.0" encoding="utf-8" ?>
<chart caption="Pie Chart" numberPrefix="$">

  <set value="0.13" label="Item A" color="AFD8F8" />

  <set value="0.5" label="Item B" color="F6BD0F" />

  <set value="0.6" label="Item C" color="8BBA00" isSliced="1" />

  <set value="0.2" label="Item D" color="A66EDD" />

  <set value="0.4" label="Item E" color="F984A1" />

</chart>


dataXml。xml內容如下:

<?xml version="1.0" encoding="utf-8" ?>
<chart palette="2" caption="Product Comparison" shownames="1" showvalues="0" numberPrefix="" showSum="1" decimals="0"  yAxisMinValue="20"useRoundEdges="1" >
  <categories>
    <category label="Product A" />
    <category label="Product B" />
    <category label="Product C" />
    <category label="Product D" />
    <category label="Product E" />
  </categories>
  <dataset seriesName="2004" color="AFD8F8" showValues="0">
    <set value="25601.34" />
    <set value="20148.82" />
    <set value="17372.76" />
    <set value="35407.15" />
    <set value="38105.68" />
  </dataset>
  <dataset seriesName="2005" color="F6BD0F" showValues="0">
    <set value="57401.85" />
    <set value="41941.19" />
    <set value="45263.37" />
    <set value="117320.16" />
    <set value="114845.27" />
  </dataset>
  <dataset seriesName="2006" color="8BBA00" showValues="0">
    <set value="45000.65" />
    <set value="44835.76" />
    <set value="18722.18" />
    <set value="77557.31" />
    <set value="92633.68" />
  </dataset>
</chart>

如上兩個文件必須和test。html放在同一層目錄裏面。

然後再上面三個文件的同層目錄中建一個FusionCharts的目錄裏面放如下幾個文件:

(1)FusionChart。js(2)FusionChartsExportComponent。js(3)放置從fusionchart官網下載的swf文件。


通過以上工作直接點擊test。html就會顯示如下的兩個圖形了:



以上就是fusionchart的簡單應用。在這方面fusioncharts還是比價不錯的工具。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章