FusionCharts 学习总结
FusionCharts和Charts一样都是对数据进行统计并绘制成图标的控件,但FusionCharts带有跨浏览器的flash图表组件解决方案,功能更为强大。、
在这里我将采用Js来加载FusionCharts图形:
第一步:导入FusionCharts.js文件
<script language="JavaScript" src="../FusionCharts/FusionCharts.js"></script>
第二步:定义一个DIV,它必须具备一个元素:id
<div id="chartdiv_01" align="center"></div>
第三步:建立一个FusionCharts对象
var myChart = new FusionCharts("para1", "para2", "para3", "para4");
Para1:表示的是SWF文件的地址。
Para2:该图形的ID,这个可以随便命名,但是需要保证它的唯一性。
para3:图形的高度。
Para4:图形的长度。
例如:
var myChart = new FusionCharts("../FusionCharts/Doughnut3D.swf", "myChartId_02", "600", "500");
第四步:设置数据文件
这里有两种方法加载xml数据文件
第一种利用setDataURL:
myChart.setDataURL("Data.xml");
第二种利用setDataXML:
myChart.setDataURL(<graph caption='每月销售额柱形图' xAxisName='月份' yAxisName='Units' showNames='1' decimalPrecision='0' formatNumberScale='0'>
<set name='一月' value='100' color='AFD8F8' />
<set name='二月' value='200' color='F6BD0F' />
<set name='三月' value='300' color='8BBA00' />
<set name='四月' value='120' color='FF8E46' />
<set name='五月' value='220' color='008E8E' />
<set name='六月' value='330' color='D64646' />
<set name='七月' value='210' color='8E468E' />
<set name='八月' value='544' color='588526' />
<set name='九月' value='565' color='B3AA00' />
<set name='十月' value='754' color='008ED6' />
<set name='十一月' value='441' color='9D080D' />
<set name='十二月' value='654' color='A186BE' />
</graph>");
dataXML和dataURL都可以提供数据,只不过dataURL是将数据文件以URL地址的形式,而dataXML则是以XML文本的形式。说的直白点就是dataURL将xml文件的地址告知FCF,而dataXML是将XML数据文件里的内容告知FCF。其中setDataXML()方面的参数是一个完整的XML字符串。
第五步:指定图形渲染的位置。
myChart.render("chartdiv_01");
通过上面五个步骤就是完成js加载FusionCharts图形。如果需要加载多个图形,只需要重复第二步—第五步,但是需要确保DIV和FusionCharts对象的id的唯一性。
<script>
var xmlData = "<%=xmldata %>"; //从后台获取xml数据字符串xmldata
var myChart = new FusionCharts("FusionCharts/Column3D.swf", "myChartId", "500", "500");
myChart.setDataXML(xmlData); //myChart.setDataURL("Data.xml");
myChart.render("chartDiv");
</script>
后台代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Text;
//using InfoSoftGlobal; public partial class pieChart : System.Web.UI.Page
{
StringBuilder xmlDataSource = new StringBuilder();
public string xmldata;
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
getXml();
xmldata = xmlDataSource.ToString();
BindGridview();
}
}
public void getXml()
{
string sql = "select COUNT(*) Num,Sex from Users group by Sex order by Sex desc ";
DataTable dt = DBHelper.GetDataSet(sql);
//添加xml数据
xmlDataSource.AppendFormat("<graph showLegend='1' caption='班级男女比例统计' showValues='0' decimalPrecision='2' formatNumberScale='0'>");
for (int i = ; i < dt.Rows.Count; i++)
{
xmlDataSource.AppendFormat("<set name='{0}' value='{1}' link='pieChart.aspx?sex={0}'/>", dt.Rows[i]["Sex"].ToString(), dt.Rows[i]["Num"].ToString());
}
xmlDataSource.AppendFormat("</graph>");
//this.chartDiv.InnerHtml = FusionCharts.RenderChart("FusionCharts/FCF_Pie3D.swf","", xmlDataSource.ToString(), "chartDiv", "500", "500", false, false);
}
public void BindGridview()
{
string sex = Convert.ToString(Request.QueryString["sex"]);
string sql = "select * from users where Sex='" + sex + "'";
DataTable dt = DBHelper.GetDataSet(sql);
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
}
这里在构建xml数据字符串时用的是StringBuilder类的AppendFormat方法。
对于多系列图形被用来比较两个或更多的数据集,xml格式如下:
<graph caption='Business Results 2005 v 2006 ' xAxisName='Month' yAxisName='Revenue' showValues='0' numberPrefix='$' decimalPrecision='0' bgcolor='F3 f3f3' bgAlpha='70' showColumnShadow='1 ' divlinecolor='c5c5c5' divLineAlpha='6 0' showAlternateHGridCol
or='1 ' alternateHGridColor='f8f8f8' alternateHGridAlpha='6 0' >
<categories>
<category name='Jan' />
<category name='Feb' />
<category name='Mar' />
<category name='Apr' />
<category name='May' />
<category name='Jun' />
<category name='Jul' />
<category name='Aug' />
<category name='Sep' />
<category name='Oct' />
<category name='Nov' />
<category name='Dec' />
</categories>
<dataset seriesName='2 006' color='c4e3f7' >
<set value='2 7400' />
<set value='2 9800' />
<set value='2 5800' />
<set value='2 6800' />
<set value='2 9600' />
<set value='3 2600' />
<set value='3 1800' />
<set value='3 6700' />
<set value='2 9700' />
<set value='3 1900' />
<set value='3 4800' />
<set value='2 4800' />
</dataset>
<dataset seriesName='2 005' color='Fad35e' >
<set value='1 0000'/>
<set value='1 1500'/>
<set value='1 2500'/>
<set value='1 5000'/>
<set value='1 1000' />
<set value='9 800' />
<set value='1 1800' />
<set value='1 9700' />
<set value='2 1700' />
<set value='2 1900' />
<set value='2 2900' />
<set value='2 0800' />
</dataset>
<trendlines>
<line startValue='2 6000' color='9 1C728' displayValue='Target' showOnTop='1 '/>
</trendlines>
</graph>
我们发现,上面多了一个<categories>元素,它包含很多的子元素,如
1. <category name='Jan' />
每个<category>就表示X 轴上的一个名称。
上面还有两个<dataset>元素,一个用来表示2006 年的数据,一个表示2005 年。每个<set>则
表示图形上的一个数据。
注意<categories>的子元素的数量应该和<dataset>子元素的一致。
如果某个数据点没有数据,则<set />即可,在graph属性加上connectNullData='1'可讲不连续点连接起来。
后台代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Text; public partial class lineChart : System.Web.UI.Page
{
StringBuilder xmlDataSource = new StringBuilder();
public string xmldata;
protected void Page_Load(object sender, EventArgs e)
{
getXml();
xmldata = xmlDataSource.ToString();
}
public void getXml()
{
xmlDataSource.AppendFormat("<graph caption='学生语数英成绩统计' connectNullData='1' xAxisName='分数' yAxisName='人数' xAxisMinValue='50' xAxisMaxValue='100' labelStep='10' showValues='0' decimalPrecision='0' formatNumberScale='0'>");
//
xmlDataSource.AppendFormat("<categories >");
for (int i = ; i <= ; i++)
{
xmlDataSource.AppendFormat("<category name='{0}'/>",i.ToString());
}
xmlDataSource.AppendFormat("</categories>");
//添加语文成绩
getChineseXml();
//添加数学成绩
getMathXml();
//添加英语成绩
getEnglishXml();
xmlDataSource.AppendFormat("</graph>");
}
public void getChineseXml()
{
string sqlChinese = "select COUNT(Chinese) Num,Chinese from Users group by Chinese";
DataTable dtChinese = DBHelper.GetDataSet(sqlChinese);
xmlDataSource.AppendFormat("<dataset seriesName='语文' color='c4e3f7'>");
int n = ;
//从0-100匹配分数
for (int i = ; i <= ; i++)
{
if (n >= dtChinese.Rows.Count)
{
break;
}
if (i == Convert.ToInt32(dtChinese.Rows[n]["Chinese"]))
{
xmlDataSource.AppendFormat("<set value='{0}'/>",dtChinese.Rows[n]["Num"].ToString());
n++;
}
else
{
xmlDataSource.AppendFormat("<set />");
}
}
xmlDataSource.AppendFormat("</dataset>");
}
public void getMathXml()
{
string sqlMath = "select COUNT(Math) Num,Math from Users group by Math";
DataTable dtMath = DBHelper.GetDataSet(sqlMath);
xmlDataSource.AppendFormat("<dataset seriesName='数学' color='Fad35e'>");
int n = ;
//从0-100匹配分数
for (int i = ; i <= ; i++)
{
if (n >= dtMath.Rows.Count)
{
break;
}
if (i == Convert.ToInt32(dtMath.Rows[n]["Math"]))
{
xmlDataSource.AppendFormat("<set value='{0}'/>",dtMath.Rows[n]["Num"].ToString());
n++;
}
else
{
xmlDataSource.AppendFormat("<set />");
}
}
xmlDataSource.AppendFormat("</dataset>");
}
public void getEnglishXml()
{
string sqlEnglish = "select COUNT(English) Num,English from Users group by English";
DataTable dtEnglish = DBHelper.GetDataSet(sqlEnglish);
xmlDataSource.AppendFormat("<dataset seriesName='英语' color='91C728'>");
int n = ;
//从0-100匹配分数
for (int i = ; i <= ; i++)
{
if (n >= dtEnglish.Rows.Count)
{
break;
}
if (i == Convert.ToInt32(dtEnglish.Rows[n]["English"]))
{
xmlDataSource.AppendFormat("<set value='{0}'/>",dtEnglish.Rows[n]["Num"].ToString());
n++;
}
else
{
xmlDataSource.AppendFormat("<set />");
}
}
xmlDataSource.AppendFormat("</dataset>");
}
}
参考以下链接:
http://blog.csdn.net/chenssy/article/details/9865999
http://www.360doc.com/content/12/0727/09/1007797_226714525.shtml
FusionCharts 学习总结的更多相关文章
- 【FusionCharts学习-1】获取资源
网址 官网: http://www.fusioncharts.com/charts/ 入门学习:http://www.fusioncharts.com/dev/usage-guide/getting ...
- 【FusionCharts学习-3】显示中国地图
概述 使用FusionCharts显示中国地图 资源获取 地图下载地址:http://www.fusioncharts.com/download/maps/definition/ 将下载的地图拷贝 ...
- 【FusionCharts学习-2】第一个FusionCharts程序
获取资源 到官网:http://www.fusioncharts.com/download/ 获取FusionCharts文件: 目录结构: js目录下的文件: 创建项目 1. 项目名称:Fusion ...
- FusionCharts 分类以及各个属性参数列表
<FusionCharts学习及使用笔记>之 第一篇 其实一直以来我都在有意无意的把我平常工作中遇到并解决的问题做个记录,放到我的网易博客中.但却一直没有想过如何把我使用的技术做一个系列化 ...
- FusionCharts简单教程(一)---建立第一个FusionCharts图形
由于项目需求需要做一个报表,选择FusionCharts作为工具使用.由于以前没有接触过报表,网上也没有比较详细的fusionCharts教程,所以决定好好研究FusionCharts,同时做一个比较 ...
- FusionCharts的使用方法(php)
我们公司一直用这个图表统计, 最近整理了一下相关文档,提供大家学习. 首先可以看看 http://www.cnblogs.com/xuhongfei/archive/2013/04/12/301688 ...
- FusionCharts xml入门教程
由于项目需求需要做一个报表,选择FusionCharts作为工具使用.由于以 前没有接触过报表,网上也没有比较详细的fusionCharts教程,所以决定好好研究FusionCharts,同时做一个比 ...
- Funsion Charts 学习(一)
学习官网: http://www.fusioncharts.com/explore/line-area-charts/ 参数: numvdivlines number 垂直线显示vd ...
- FusionCharts简单教程---建立第一个FusionCharts图形
由于项目需求需要做一个报表,选择FusionCharts作为工具使用.由于以前没有接触过报表,网上也没有比较详细的fusionCharts教程,所以决定好好研究FusionCharts,同时做一个比较 ...
随机推荐
- MYSQL 数据表备份
方法: mysqldump -uuser_name -p db_name table_nameList >save_file_path 例子: 备份分studio数据库的student 表 my ...
- delphi中覆盖最大化消息(WM_GETMINMAXINFO)
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; ...
- nautilus-open-terminal右键随处打开终端
Nautilus-Open-Terminal : 可随处打开终端的 Nautilus 插件 nautilus-open-terminal-0.17-4.el6.x86_64 是一个让你随处都可以打开终 ...
- HTML加载顺序总结测试
首先,页面加载顺序:解析HTML结构.加载外部脚本和样式表文件.解析并执行脚本代码.构造HTML DOM模型.加载图片等外部文件.页面加载完毕. 也就是:html → head → title → # ...
- ntpd和ntpdate的区别
之前配置ntpd的时候搜到一句话,印象很深刻,也觉得很有标题党的效果,就借鉴为标题了:“我认为有几种人是必须不招聘/裁掉的: 1 用ntpdate代替ntpd的人”但具体原因不太懂,总觉得还是用ntp ...
- 菜鸟级SQL Server21天自学通(文档+视频)
SQL语言的主要功能就是同各种数据库建立联系,进行沟通.按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言.SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据 ...
- collection系列用法-namedtuple()
namedtuple() 参考文章地址:http://www.cnblogs.com/herbert/p/3468294.html namedtuple是继承自tuple的子类.namedtuple和 ...
- python开发的一些tips
1. Notepad++编写python脚本 1)新建文件,编写代码 2)点击菜单栏,“语言”—>“P”—>“Python”,设置脚本为Python语言的高亮(这样保存文本的时候,Note ...
- find the mincost route(最小环,最短路,floyd)
find the mincost route Time Limit: 1000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- linux学习 建立静态库,动态库,写简单的makefile
建立静态库 建立四个文件 bin(可运行文件),lib(库),include(头文件),src(放源文件) 这里的起的库明为add 在src文件里运行 1)gcc -c add.c //编译add.c ...