<script type="text/javascript">
window.onload=function(){
getEchartsData();
changetab();
$("#ct1").show();
$("#ct2").hide();
$("#ct3").hide();
$("#ct4").hide();
}
function changetab() {
//选中要显示的页面数据
var tabs = document.getElementById("tab").getElementsByTagName("span");
for (var i = 0; i < tabs.length; i++) {
tabs.onclick = tab;
}
}
function tab() {
if("s1" == this.id) {
$("#ct1").show();
$("#ct2").hide();
$("#ct3").hide();
$("#ct4").hide();
}else if("s2" == this.id) {
$("#ct2").show();
$("#ct1").hide();
$("#ct3").hide();
$("#ct4").hide();
}else if("s3" == this.id){
$("#ct3").show();
$("#ct1").hide();
$("#ct2").hide();
$("#ct4").hide();
}else if("s4" == this.id){
$("#ct4").show();
$("#ct1").hide();
$("#ct2").hide();
$("#ct3").hide();
}
var $tabs = $("#tab span");
for (var i = 0; i < $tabs.length; i++) {
$($tabs.get(i)).removeClass("tab");
if ($tabs.get(i) == this) {
$(this).addClass("tab");
}
}
}
function getEchartsData(){
/*在查询或切换统计图时图片有可能会变形,于是每次调getEchartsData()都给每个chart的宽度定义成初始值*/
$("#myChart2").css( 'width', $("#myChart2").width());
$("#myChart3").css( 'width', $("#myChart3").width());
$("#myChart4").css( 'width', $("#myChart4").width());
//配置echarts的路径
require.config({
paths: {
echarts: 'echarts'
}
});
//初始化echarts插件
require(
[
'echarts',
'echarts/chart/pie',//饼图
'echarts/chart/line',//折线图
'echarts/chart/bar',//柱状图
'echarts/chart/map',//地图
'echarts/chart/gauge'//仪表图
],
drawEcharts//调定义的函数获取参数
);
//学习时间样例数据,也可以是json数据
var arr1 = new Array(100,130,76,150);
//平均学习时间样例数据,也可以是json数据
var arr2 = new Array(150,70,100,130);
//省份样例数据,也可以是json数据
var provic = new Array('北京','上海','天津','重庆',"河北","山西","内蒙古","辽宁","吉林","黑龙江","江苏","浙江","安徽","福建","江西","山东","河南","湖北","湖南","广东","广西","海南","四川","贵州","云南","西藏","陕西","甘肃","青海","宁夏","新疆","香港","澳门","台湾");
//销售额样例数据,也可以是json数据
var toCash = new Array(500,400,30,200,200,40,10,160,50,280,300,180,100,20,270,100,330,350,10,160,50,280,300,180,100,20,3,180,169,150,180,55,66,38);
function drawEcharts(ec){
drawPie(ec);//饼图
drawLineOrBar(ec);//折线图或柱状图,可以相互转换
drawMap(ec);//地图
drawGauge(ec);//仪表图
}
function drawPie(ec){
//初始化chart
myChart1 = ec.init(document.getElementById('myChart1'));
//option1为类似于json的一个对象,data可以写一个while循环赋值(见地图的数据)
var option1 = {
title : {
text: '上个月每周的学习时间分布',
//subtext: '饼图(Pie Chart)',
x:'center'
},
tooltip : {
trigger: 'item',
//trigger: 'axis',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
legend: {
orient : 'vertical',
x : 'left',
y : 'center',
data:['第一周'+arr1[0]+'学时',
'第二周'+arr1[1]+'学时',
'第三周'+arr1[2]+'学时',
'第四周'+arr1[3]+'学时'
]
},
toolbox: {
show : true,
feature : {
//mark : {show: true},
dataView : {show: true, readOnly: false},
restore : {show: true},
saveAsImage : {show: true}
}
},
calculable : true,
series : [
{
//name:'饼图实例-------------------------------',-------------',
type:'pie',
radius : '75%',
center: ['50%', '60%'],
data:[
{value:arr1[0], name:'第一周'+arr1[0]+'学时'},
{value:arr1[1], name:'第二周'+arr1[1]+'学时'},
{value:arr1[2], name:'第三周'+arr1[2]+'学时'},
{value:arr1[3], name:'第四周'+arr1[3]+'学时'}
]
}
]
};
// 为echarts对象加载数据
myChart1.setOption(option1);
}
function drawLineOrBar(ec){
var myChart2 = ec.init(document.getElementById("myChart2"));
var option2 = {
//图表标题
title: {
text: '学习时间折线统计', //正标题
//link: "https:www.baidu.com", /* 正标题链接 点击可在新窗口中打开 */
x: "center" //标题水平方向位置
/* subtext: "From:http://www.xxx.com", */ //副标题
/* sublink: "http://www.xxx.com", //副标题链接 */
//正标题样式
//textStyle: {
// fontSize:24
//},
//副标题样式
/* subtextStyle: {
fontSize:12,
color:"red"
} */
},
//数据提示框配置
tooltip: {
trigger: 'axis' //触发类型,默认数据触发,见下图,可选为:'item' | 'axis' 其实就是是否共享提示框
},
//图例配置
legend: {
data: ['周学习时间趋势走向','平均学习时间趋势走向'], //这里需要与series内的每一组数据的name值保持一致
y:"bottom"
},
//工具箱配置
toolbox: {
show : true,
feature : {
mark : {show: true}, // 辅助线标志,上图icon左数1/2/3,分别是启用,删除上一条,删除全部
dataView : {show: true, readOnly: false},// 数据视图,上图icon左数8,打开数据视图
magicType : {show: true, type: ['line', 'bar']},// 图表类型切换,当前仅支持直角系下的折线图、柱状图转换,上图icon左数6/7,分别是切换折线图,切换柱形图
restore : {show: true}, // 还原,复位原始图表,上图icon左数9,还原
saveAsImage : {show: true} // 保存为图片,上图icon左数10,保存
}
},
calculable: true,
//x轴配置
xAxis: [
{
type: 'category',
//boundaryGap: false,
data: ['第一周', '第二周', '第三周', '第四周'],
name: "周"
}
],
//Y轴配置
yAxis: [
{
type: 'value',
splitArea: {show: false},
name:"单位:小时"
}
],
//图表Series数据序列配置
series: [
{
name: '平均学习时间趋势走向',
type: 'line',
smooth:true,
itemStyle: {normal:{
label : {show:true,formatter:'{c}'},
lineStyle : {color:'#6666FF'}
}
},
data:arr1
},
{
name: '周学习时间趋势走向',
type: 'line',
itemStyle: {normal:{
label : {show:true,formatter:'{c}'},
lineStyle : {color:'#F09D65'}
}
},
data:arr2
}
]
}
myChart2.setOption(option2);
}
function drawMap(ec) {
var myChart3 = ec.init(document.getElementById("myChart3"));
var mapParams = {
title : {
text : '销售额',
subtext : '单位(元)',
left : 'center'
},
tooltip : {
trigger : 'item'
},
legend : {
orient : 'vertical',
left : 'left',
data : [ '销售额' ]
},
toolbox : {
show : true,
orient : 'vertical',
left : 'right',
top : 'center',
feature : {
dataView : {
readOnly : true
},
restore : {},
saveAsImage : {}
}
},
/**
* @Parms:visualMap是echarts3中展示的格式
* @Parms:dataRange是echarts2中展示的格式
*/
visualMap : {
min : 0,
max : 500,
text : [ 'High', 'Low' ],
realtime : false,
calculable : true,
inRange : {
color : [ 'brown', 'yellow', '#71C671' ]
}
},
dataRange : {
min : 0,
max : 200,
x : 'left',
selectedMode : false,
y : 'bottom',
text : [ 'High', 'Low' ], // 文本,默认为数值文本
calculable : true,
color : [ 'brown', 'yellow', '#71C671']
},
series : [ {
name : '销售额',
type : 'map',
mapType : 'china',
roam : false,
itemStyle : {
normal : {
label : {
show : true
}
},
emphasis : {
label : {
show : true
}
}
},
data : (function() {
var res = [];
var len = provic.length;
while (len--) {
res.push({
name : provic[len],
value : toCash[len]
});
}
return res;
})(),
itemStyle : {
normal : {
color : '#BF3EFF',
borderWidth : 0.5,
borderColor : 'black',
label : {
show : true
}
}
}
}]
};
myChart3.setOption(mapParams);
}
function drawGauge(ec) {
var myChart4 = ec.init(document.getElementById('myChart4'));
var option4 = {
tooltip : {
formatter: "{a} : {c}%"
},
toolbox: {
show : true,
feature : {
saveAsImage : {show: true}
}
},
series : [
{
name:'销售额',
type:'gauge',
center : ['15%', '50%'], // 默认全局居中
axisLine: { // 坐标轴线
lineStyle: { // 属性lineStyle控制线条样式
color: [[0.2, '#ff4500'],[0.8, '#48b'],[1, '#228b22']],
width: 3
}
},
axisTick: { // 坐标轴小标记
splitNumber: 10, // 每份split细分多少段
length :8, // 属性length控制线长
lineStyle: { // 属性lineStyle控制线条样式
color: 'auto'
}
},
axisLabel: { // 坐标轴文本标签,详见axis.axisLabel
textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: 'auto'
}
},
splitLine: { // 分隔线
show: true, // 默认显示,属性show控制显示与否
length :15, // 属性length控制线长
lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式
color: 'auto'
}
},
pointer : {
width : 3
},
title : {
show : true,
offsetCenter: [0, '90%']
},
detail : {
textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: 'auto',
fontWeight: 'bolder'
}
},
detail : {formatter:'{value}%'},
data:[{value: 45, name: '目标净销售额'+100+'万元,\n累计完成'+45+'万元'}]
},
{
name:'回款情况',
type:'gauge',
center : ['50%', '50%'], // 默认全局居中
axisLine: { // 坐标轴线
lineStyle: { // 属性lineStyle控制线条样式
color: [[0.2, '#ff4500'],[0.8, '#48b'],[1, '#228b22']],
width: 3
}
},
axisTick: { // 坐标轴小标记
splitNumber: 10, // 每份split细分多少段
length :8, // 属性length控制线长
lineStyle: { // 属性lineStyle控制线条样式
color: 'auto'
}
},
axisLabel: { // 坐标轴文本标签,详见axis.axisLabel
textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: 'auto'
}
},
splitLine: { // 分隔线
show: true, // 默认显示,属性show控制显示与否
length :15, // 属性length控制线长
lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式
color: 'auto'
}
},
pointer : {
width : 3
},
title : {
show : true,
offsetCenter: [0, '90%']
},
detail : {
textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: 'auto',
fontWeight: 'bolder'
}
},
detail : {formatter:'{value}%'},
data:[{value: 79, name: '目标净回款'+200+'万元,\n累计净回款'+158+'万元'}]
},
{
name:'预算',
type:'gauge',
detail : {formatter:'50%'},
center : ['85%', '50%'], // 默认全局居中
axisLine: { // 坐标轴线
lineStyle: { // 属性lineStyle控制线条样式
color: [[0.2, '#228b22'],[0.8, '#48b'],[1, '#ff4500']],
width: 3
}
},
axisTick: { // 坐标轴小标记
splitNumber: 10, // 每份split细分多少段
length :8, // 属性length控制线长
lineStyle: { // 属性lineStyle控制线条样式
color: 'auto'
}
},
axisLabel: { // 坐标轴文本标签,详见axis.axisLabel
textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: 'auto'
}
},
splitLine: { // 分隔线
show: true, // 默认显示,属性show控制显示与否
length :15, // 属性length控制线长
lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式
color: 'auto'
}
},
pointer : {
width : 3
},
title : {
show : true,
offsetCenter: [0, '90%']
},
detail : {
textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: 'auto',
fontWeight: 'bolder'
}
},
detail : {formatter:'{value}%'},
data:[{value: 88, name: '预算'+100+'万元,\n累计发生'+88+'万元'}]
}
]
};
myChart4.setOption(option4);
}
}
</script>