上一节 《echart图表控件配置入门(一)》介绍了echarts图表控件的入门配置,使开发人员可以快速搭建出一个静态的图表。但是在实际开发过程这还是不够的,不可能所有的图表控件都是静态数据。决大部份图表是需要读取后台大量的数据时行可视化展示。图表较区表格形式的数据在可视化方面是有一定的优势。能使用户可以快速看出数据存在的问题、趋势、比较分析。因为人类对图表中的颜色、大小、形状更加敏感。

现在分别对折线图、柱状图、饼图、中国地图四类图表的数据绑定进行详细的介绍。echarts中其它的图表方法都差不多,只要了解官方的demo,按照指定的数据结构进行解析都能很方便的得到想要的结果;

echarts中提供了setOption、setSeries两个方法可以对图表的相关数据和属性进行动态设置,setOption一定要在setSeries之前设置;

var myChart = ec.init(document.getElementById('div1'));
var ecConfig = require('echarts/config');
var option = {
title: {
text: '标题',
x:"center"
},
tooltip: {
trigger: 'axis'
},
legend: {
data:[],
y:"bottom" },
toolbox: {
show: true,
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
magicType: { show: true, type: ['line', 'bar'] },
restore: { show: true },
saveAsImage: { show: true }
}
},
xAxis: [{
type: 'category',
data:[]
}],
yAxis: [{
type: 'value'
}],
series: []
};

option中的属性可以通过对象属性的方式获取设置;例如以上代码中,

option.legend.data=["xx","xx"] 可以通过这种方法设置对应属性的值

option.title.text="改变标题";//改变标题属性

option.xAxis[0]["data"]=[];//改变坐标值

myChart.setOption(option);//设置图表对象的所有参数属性

myChart.setSeries(seriesData);//设置图表对象的数据集合

通过后台交互数据肯定会有一定的延迟,这时最好能有一个友好载入提示,echarts提供showLoading方法

// 载入动画提示
myChart.showLoading({
text: '正在努力的读取数据中...'
}); //取消载入提示
myChart.hideLoading();

来几个具体的实例吧。

以下实例的ajax用jquery的$.ajax。所以如果你要在本地测试,需要引用jquery.js。

这里所有demo虽然也请求了后台。但都是通过前后模拟了一个返回的json数据。不管各位是搞jsp、asp、php的都没关系,只要按指定的格式生成对的格式的json数据就行了。

至于后台如何生成json数据,各自就baidu下吧。这里就不提了。

通过官方的demo我可以看到哪些属性是需要动态传入数据,然后我们按照格式传入对应的值或数组;

通过demo的代码。我们可以看出折线标红的地方需要动态设置分别是

option.title.text="标题";

option.legend.data=["图例1","图例2","……"];

option.xAxis[0]["data"]=["一","二","三","……"];//x轴数据

var seriesData=[

  {

    name:"图例1",

    type:"line",

    data:[1,2,3]

  }

]

myChart.setOption(option);  //设置全部参数属性
myChart.setSeries(seriesData);//设置图例数据

通过以上方法就可以实现动态的echarts数据改变了。

1、折线图

<!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>
<script src="../js/jquery-1.7.min.js" type="text/javascript"></script>
<script src="../build/source/echarts.js" type="text/javascript"></script>
</head>
<body>
<div id="div1" style="width:900px;height:400px;border:1px solid #dddddd;margin:10px auto;"></div> <script type="text/javascript"> require.config({
paths: {
echarts: '../build/dist' //引用资源文件夹路径,注意路径
}
});
require(
[
'echarts',
'echarts/chart/bar',
'echarts/chart/line' ],
function (ec) {
var myChart = ec.init(document.getElementById('div1'));
var ecConfig = require('echarts/config');
var option = {
title: {
text: '',
x:"center"
},
tooltip: {
trigger: 'axis'
},
legend: {
data:[],
y:"bottom" },
toolbox: {
show: true,
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
magicType: { show: true, type: ['line', 'bar'] },
restore: { show: true },
saveAsImage: { show: true }
}
},
xAxis: [{
type: 'category',
data:[]
}],
yAxis: [{
type: 'value'
}],
series: []
}; // 载入动画---------------------
myChart.showLoading({
text: '正在努力的读取数据中...', //loading话术
}); $.ajax({
url:"Default.aspx",
data:{},
success:function(data){
//数据接口成功返回
//后台需要返回以下结构的json数据
data={
"legen":["访问量","订单数"],
"axis":['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
"series":[
[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
[4.0, 2.9, 6.0, 21.2, 50.6, 56.7, 115.6, 102.2, 62.6, 20.0, 9.4, 3.3]
]
};
var legendData=[];
var xAxisData=[];
var seriesData=[];
if(data!=null && data["series"].length>0){
legendData=data["legen"];
xAxisData=data["axis"];
for(var i=0,len=data["series"].length;i<len;i++){
seriesData.push({
"name":legendData[i],
"type":"line",
"data":data["series"][i]
}); }
}
option.title.text="折线图标题";
option.legend.data=legendData;
option.xAxis[0]["data"]=xAxisData; myChart.setOption(option);
myChart.setSeries(seriesData);
},
error:function(){
//数据接口异常处理
var legendData=[''];
var xAxisData=[''];
var seriesData = [
{
name:'',
type: 'line',
data: [0]
}
];
option.legend.data=legendData;
option.xAxis[0]["data"]=xAxisData; myChart.setOption(option);
myChart.setSeries(seriesData); },
complete:function(){
//不管数据接口成功或异常,都终于载入提示
//停止动画载入提示
myChart.hideLoading();
}
});
}
); </script> </body>
</html>

2、柱状图

<!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>
<script src="../js/jquery-1.7.min.js" type="text/javascript"></script>
<script src="../build/source/echarts.js" type="text/javascript"></script>
</head>
<body>
<div id="div1" style="width:900px;height:400px;border:1px solid #dddddd;margin:10px auto;"></div> <script type="text/javascript">
require.config({
paths: {
echarts: '../build/dist' //引用资源文件夹路径,注意路径
}
});
require(
[
'echarts',
'echarts/chart/bar',
'echarts/chart/line' ],
function (ec) {
var myChart = ec.init(document.getElementById('div1'));
var ecConfig = require('echarts/config');
var option = {
title: {
text: '标题',
x:"center"
},
tooltip: {
trigger: 'axis'
},
legend: {
data:[],
y:"bottom" },
toolbox: {
show: true,
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
magicType: { show: true, type: ['line', 'bar'] },
restore: { show: true },
saveAsImage: { show: true }
}
},
xAxis: [{
type: 'category',
data:[] //['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
}],
yAxis: [{
type: 'value'
}],
series: []
}; // 载入动画---------------------
myChart.showLoading({
text: '正在努力的读取数据中...', //loading话术
}); $.ajax({
url:"Default.aspx",
data:{},
success:function(data){
//后台需要返回以下结构的json数据
data={
"legen":["访问量","订单数"],
"axis":['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
"series":[
[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
[4.0, 2.9, 6.0, 21.2, 50.6, 56.7, 115.6, 102.2, 62.6, 20.0, 9.4, 3.3]
]
}
var legendData=[];
var xAxisData=[];
var seriesData=[];
if(data!=null && data["series"].length>0){
legendData=data["legen"];
xAxisData=data["axis"];
for(var i=0,len=data["series"].length;i<len;i++){
seriesData.push({
"name":legendData[i],
"type":"bar", //柱状图和拆线图类似只要将bar 改成line
"data":data["series"][i]
}); }
}
option.legend.data=legendData;
option.xAxis[0]["data"]=xAxisData; myChart.setOption(option);
myChart.setSeries(seriesData);
},
error:function(){
var legendData=[''];
var xAxisData=[''];
var seriesData = [
{
name:'订单数',
type: 'bar', //柱状图和拆线图类似只要将bar 改成line
data: [0]
}
];
option.legend.data=legendData;
option.xAxis[0]["data"]=xAxisData; myChart.setOption(option);
myChart.setSeries(seriesData); },
complete:function(){
//停止动画载入提示
myChart.hideLoading();
}
});
}
); </script> </body>
</html>

3、饼图

<!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>
<script src="../js/jquery-1.7.min.js" type="text/javascript"></script>
<script src="../build/source/echarts.js" type="text/javascript"></script>
</head>
<body>
<div id="div1" style="width:900px;height:400px;border:1px solid #dddddd;margin:10px auto;"></div> <script type="text/javascript">
require.config({
paths: {
echarts: '../build/dist' //引用资源文件夹路径,注意路径
}
});
require(
[
'echarts',
'echarts/chart/bar',
'echarts/chart/line',
'echarts/chart/pie' ],
function (ec) {
var myChart = ec.init(document.getElementById('div1'));
var ecConfig = require('echarts/config');
var option = {
title: {
text: '标题',
x:"center"
},
tooltip: {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
legend: {
data:[],
y:"bottom"
},
calculable : true,
toolbox: {
show: true,
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
magicType: { show: true, type: ['line', 'bar'] },
restore: { show: true },
saveAsImage: { show: true }
}
},
series: []
}; // 载入动画---------------------
myChart.showLoading({
text: '正在努力的读取数据中...', //loading话术
}); $.ajax({
url:"Default.aspx",
data:{},
success:function(data){
//后台需要返回以下结构的json数据
data={
"legen":["访问量","订单数","购买数"],
"series":[4440,3220,1110]
}
var legendData=[];
var seriesData=[];
if(data!=null && data["series"].length>0){
legendData=data["legen"];
seriesData.push({
"name":"饼图标例1",
"type":"pie",
"radius" : '55%', //饼图半径大小
"center": ['50%', '60%'],//饼图圆心位置x,y
"data":function(){
var t_data=[];
for(var i=0,len=data["series"].length;i<len;i++){
t_data.push({
"name":legendData[i],
"value":data["series"][i]
});
}
return t_data;
}()
});
}
option.legend.data=legendData; myChart.setOption(option);
myChart.setSeries(seriesData);
},
error:function(){
var legendData=[''];
var seriesData = [
{
"name":"饼图标例1",
"type":"pie",
"radius" : '55%', //饼图半径大小
"center": ['50%', '60%'],//饼图圆心位置x,y
data: [0]
}
];
option.legend.data=legendData;
myChart.setOption(option);
myChart.setSeries(seriesData); },
complete:function(){
//停止动画载入提示
myChart.hideLoading();
}
});
}
); </script> </body>
</html>

4、中国地图

<!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>
<script src="../js/jquery-1.7.min.js" type="text/javascript"></script>
<script src="../build/source/echarts.js" type="text/javascript"></script>
</head>
<body>
<div id="div1" style="width:900px;height:400px;border:1px solid #dddddd;margin:10px auto;"></div> <script type="text/javascript">
require.config({
paths: {
echarts: '../build/dist' //引用资源文件夹路径,注意路径
}
});
require(
[
'echarts',
'echarts/chart/bar',
'echarts/chart/line',
'echarts/chart/map' ],
function (ec) {
var myChart = ec.init(document.getElementById('div1'));
var ecConfig = require('echarts/config'); var mapType = [
'china',
'广东', '青海', '四川', '海南', '陕西',
'甘肃', '云南', '湖南', '湖北', '黑龙江',
'贵州', '山东', '江西', '河南', '河北',
'山西', '安徽', '福建', '浙江', '江苏',
'吉林', '辽宁', '台湾',
'新疆', '广西', '宁夏', '内蒙古', '西藏',
'北京', '天津', '上海', '重庆',
'香港', '澳门'
];
var option = {
title: {
text: '标题',
x:"center"
},
tooltip: {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
legend: {
data:[],
y:"bottom"
},
dataRange: {
min: 0,
max:50000, //最好通过对数据计算得出,不要写死
x: 'left',
y: 'bottom',
text:['高','低'], // 文本,默认为数值文本
calculable : true
},
toolbox: {
show: true,
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
magicType: { show: true, type: ['line', 'bar'] },
restore: { show: true },
saveAsImage: { show: true }
}
},
series: []
}; // 载入动画---------------------
myChart.showLoading({
text: '正在努力的读取数据中...', //loading话术
}); $.ajax({
url:"Default.aspx",
data:{},
success:function(data){
//后台需要返回以下结构的json数据
data={
"legen":["访问量","订单数"],
"series":[
[{"name":"上海","value":31417.76},{"name":"云南","value":5828.25},{"name":"其他","value":0.00},{"name":"内蒙古","value":297.00},{"name":"北京","value":25683.00},{"name":"吉林","value":3044.38},{"name":"四川","value":26890.66},{"name":"天津","value":11341.98},{"name":"宁夏","value":297.00},{"name":"安徽","value":1553.00},{"name":"山东","value":17969.81},{"name":"山西","value":2675.20},{"name":"广东","value":51438.63},{"name":"广西","value":4806.00},{"name":"新疆","value":5788.21},{"name":"江苏","value":76003.09},{"name":"江西","value":12879.03},{"name":"河北","value":7811.25},{"name":"河南","value":3772.00},{"name":"浙江","value":13383.12},{"name":"海南","value":0.00},{"name":"湖北","value":22250.17},{"name":"湖南","value":12925.44},{"name":"甘肃","value":7561.56},{"name":"福建","value":22143.76},{"name":"西藏","value":1802.40},{"name":"贵州","value":6961.41},{"name":"辽宁","value":8506.00},{"name":"重庆","value":14562.92},{"name":"陕西","value":3939.03},{"name":"青海","value":0.00},{"name":"黑龙江","value":2010.28}],
[{"name":"上海","value":31417.76},{"name":"云南","value":5828.25},{"name":"其他","value":0.00},{"name":"内蒙古","value":297.00},{"name":"北京","value":25683.00},{"name":"吉林","value":3044.38},{"name":"四川","value":26890.66},{"name":"天津","value":11341.98},{"name":"宁夏","value":297.00},{"name":"安徽","value":1553.00},{"name":"山东","value":17969.81},{"name":"山西","value":2675.20},{"name":"广东","value":51438.63},{"name":"广西","value":4806.00},{"name":"新疆","value":5788.21},{"name":"江苏","value":76003.09},{"name":"江西","value":12879.03},{"name":"河北","value":7811.25},{"name":"河南","value":3772.00},{"name":"浙江","value":13383.12},{"name":"海南","value":0.00},{"name":"湖北","value":22250.17},{"name":"湖南","value":12925.44},{"name":"甘肃","value":7561.56},{"name":"福建","value":22143.76},{"name":"西藏","value":1802.40},{"name":"贵州","value":6961.41},{"name":"辽宁","value":8506.00},{"name":"重庆","value":14562.92},{"name":"陕西","value":3939.03},{"name":"青海","value":0.00},{"name":"黑龙江","value":2010.28}]
]
}
var legendData=[];
var seriesData=[];
if(data!=null && data["series"].length>0){
legendData=data["legen"];
for(var i=0,len=data["series"].length;i<len;i++){
seriesData.push({
"name":legendData[i],
"type":"map",
"mapType":"china",
"roam":false,
"itemStyle":{
"normal":{"label":{show:true}},
"emphasis":{"label":{show:true}}
},
"data": data["series"][i]
});
}
}
option.legend.data=legendData; myChart.setOption(option);
myChart.setSeries(seriesData);
},
error:function(){
// var legendData=[''];
// var seriesData = [
// {
// "name":"饼图标例1",
// "type":"pie",
// "radius" : '55%', //饼图半径大小
// "center": ['50%', '60%'],//饼图圆心位置x,y
// data: [0]
// }
// ];
// option.legend.data=legendData;
// myChart.setOption(option);
// myChart.setSeries(seriesData); },
complete:function(){
//停止动画载入提示
myChart.hideLoading();
}
});
}
); </script> </body>
</html>

注意dataRange的max和min会影响到颜色深度的。因为当前值会和最大值求比,然后计算颜色深度。

可以通过dataRange的color:['#dddddd','#777777'] 设置max,min的颜色值

echart图表控件配置入门(二)常用图表数据动态绑定的更多相关文章

  1. echart图表控件配置入门(一)

    现在主流的web图表控件主要有hightchart.fusionchart.echart: echart作为百度前端部门近期推出的一个基于html5的免费图表控件,以其丰富图表类型和良好的兼容性速度得 ...

  2. 跨平台图表控件TeeChart使用教程:导入XML数据

    TeeChart的最新版中包含了一个自动加载XML数据的新组件.这个组件的名字叫做TTeeXMLSource,用户可以在TeeXML.pas unit中找到这个组件. 加载XML图表所需的最小属性是& ...

  3. 跨平台图表控件TeeChart使用教程:将图表数据导出为XML格式

    在开发者使用TeeChart进行开发的过程中,不管是在设计时或者运行时都可以使用的图表导出对话框将图表数据轻易地导出为XML格式: TeeChart最新版那下载地址 上图为TeeChart导出对话框的 ...

  4. .net chart(图表)控件的使用-System.Windows.Forms.DataVisualization.dll

    这个案例指在介绍微软这套免费又功能强大的图表控件Microsoft Chart Controls for Microsoft .NET Framework 3.5,通过它,可让您的项目及报表,轻松套用 ...

  5. 问题:MSChart.exe;结果:微软图表控件MsChart使用方法及各种插件下载地址

    微软图表控件MsChart使用方法及各种插件下载地址 (2012-08-10 17:32:33) 转载▼ 标签: 图表 控件 下载地址 kernel32 微软 it 分类: C# 昨天在网上看到了微软 ...

  6. [深入浅出Windows 10]QuickCharts图表控件库解析

    13.4 QuickCharts图表控件库解析     QuickCharts图表控件是Amcharts公司提供的一个开源的图表控件库,这个控件库支持WPF.Silverlight.和Windows等 ...

  7. Echarts图表控件使用总结1(Line,Bar)

    问题篇(详解):http://www.cnblogs.com/hanyinglong/p/4708337.html 1.前言 a.在系统开发过程中可能会使用到图表控件,一个好的图标控件可以使我们的网站 ...

  8. 二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...

  9. Spring Boot 项目学习 (二) MySql + MyBatis 注解 + 分页控件 配置

    0 引言 本文主要在Spring Boot 基础项目的基础上,添加 Mysql .MyBatis(注解方式)与 分页控件 的配置,用于协助完成数据库操作. 1 创建数据表 这个过程就暂时省略了. 2 ...

随机推荐

  1. Getting Started with Mongoose and Node.js – A Sample Comments System | Dev Notes

    In this post, we’re going to be creating a sample comments system using Node, Express and Mongoose.  ...

  2. linux之应用开发杂记(一)

    1.Shell 当前目录 $(pwd) 2.Samba的配置 sudo apt-get install samba Samba的配置文件是/etc/samba/smb.conf [global] se ...

  3. CString和string

    CString和string(一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中: CString(typedef CS ...

  4. 如何停止Android Monkey脚本

    如何停止Android Monkey脚本 最近用monkey来包apk的性能测试,发现一旦monkey跑起来以后,即使将数据线和PC断开,monkey脚本还是会继续运行下去.结果找到了一个办法去停止它 ...

  5. WP7 MD5加密

    WP7不支持MD5加密,在网上找了一个实现MD5加密的算法. //Copyright (c) Microsoft Corporation. All rights reserved. using Sys ...

  6. Windows 7 32位上硬盘安装linux[ubuntu13.04] 双系统

    本内容介绍如何在window7上安装ubuntu双系统 一.准备工具 1. EasyBCD : 用来制作引导菜单选项 2.Wingrub : 用来确定磁盘文件Linux表示法位置 3.分区助手 :用来 ...

  7. android studio sqlite操作代码片段

    SQLiteDatabase db;Cursor cur; SimpleCursorAdapter adapter;   // 打开或创建数据库db = openOrCreateDatabase(DB ...

  8. 戏(细)说Executor框架线程池任务执行全过程(上)

    一.前言 1.5后引入的Executor框架的最大优点是把任务的提交和执行解耦.要执行任务的人只需把Task描述清楚,然后提交即可.这个Task是怎么被执行的,被谁执行的,什么时候执行的,提交的人就不 ...

  9. WEBUS2.0 In Action - 索引操作指南(2)

    上一篇:WEBUS2.0 In Action - 索引操作指南(1) | 下一篇:WEBUS2.0 In Action - 搜索操作指南(1) 3. 添加.删除.撤销删除和修改文档 在WEBUS中要将 ...

  10. HDU 1023 Train Problem II (卡特兰数,经典)

    题意: 给出一个数字n,假设火车从1~n的顺序分别进站,求有多少种出站序列. 思路: 卡特兰数的经典例子.n<101,用递推式解决.需要使用到大数.n=100时大概有200位以下. #inclu ...