龙空技术网

echarts制作折线型,柱形等图表,同时显示数据视图,存图

烧烤味薯片 136

前言:

今天姐妹们对“ajax序号例子”大体比较重视,你们都想要学习一些“ajax序号例子”的相关内容。那么小编同时在网络上网罗了一些关于“ajax序号例子””的相关知识,希望咱们能喜欢,兄弟们一起来学习一下吧!

效果图js代码

var myChart = echarts.init(document.getElementById('TrendMap'));

// 显示标题,图例和空的坐标轴

$.ajax({

type:"POST",

url:"/crm/test/data",

async:false,

cache:false,

success:function(data){

myChart.setOption({

title:{

text:"单位:百万(人民币)",

textStyle:{

fontSize:12, // 让字体变大

fontWeight:''

}

},

tooltip : {

trigger: 'axis'

},

legend: {

data:['保费','赔款'],

},

toolbox: {

show : true,

feature : {

mark : {show: true},

dataView : {show: true, readOnly: true,lang:['数据视图','关闭'],optionToContent: function (opt) {

var colName = "序号";

var typeName = "月份";

var dataview = opt.toolbox[0].feature.dataView; //获取dataview

var table = '<div style="position:absolute;top: 5px;left: 0px;right: 0px;line-height: 1.4em;text-align:center;font-size:14px;"></div>'

table += getTable(opt,colName,typeName);

return table;

}},

magicType : {show: true, type: ['line', 'bar']},

saveAsImage : {show: true,name:"保费,赔款展示图"}

}

},

calculable : true,

xAxis : [

{

type : 'category',

boundaryGap : false,

data : data.data.countDate,

axisLabel:{

interval:0, //不隔着显示

rotate:-30,

textStyle:{

fontSize:10 // 让字体变大

}

}

}

],

yAxis : [

{

type : 'value',

axisLabel:{

formatter:function(params){

var value =params.toString();

value = value.substring(0,value.length-6);

return value;

},

textStyle:{

fontSize:10 // 让字体变大

}

}

}

],

series : [

{

name:'保费',

type:'line',

smooth:true,

itemStyle: {normal: { color:'#47b39b',areaStyle: {type: 'default'}}},

data:data.data.allPremium

},

{

name:'赔款',

type:'line',

smooth:true,

itemStyle: {normal: {color:'#ffc153',areaStyle: {type: 'default'}}},

data:data.data.allDutyPaid

}

],

dataZoom: [

{ // 这个dataZoom组件,默认控制x轴。

type: 'slider', // 这个 dataZoom 组件是 slider 型 dataZoom 组件

start: 90, // 左边在 10% 的位置。

end: 100 , // 右边在 60% 的位置。

xAxisIndex:0

}

],

grid:{

left:'12%',//组件距离容器左边的距离

right:'10%',

bottom:'23%',

top:'12%'

}

});

},

error:function(error){

console.log(error);

}

})

function getTable(opt,colName,typeName){

var axisData = opt.xAxis[0].data;//获取图形的data数组

var series = opt.series;//获取series

var num = 0;//记录序号

var sum = new Array();//获取合计数组(根据对应的系数生成相应数量的sum)

for(var i=0; i<series.length; i++){

sum[i] = 0;

}

var table = '<table class="table table-striped table-bordered"><thead><tr>'

+ '<th>'+colName+'</th>'

+ '<th>'+typeName+'</th>';

for(var i=0; i<series.length;i++){

table += '<th>'+series[i].name+'</th>'

}

table += '</tr></thead><tbody>';

for (var i = axisData.length-1 ;i>=0; i--) {

num += 1;

for(var n=0;n<series.length;n++){

if(series[n].data[i]){

sum[n] += Number(series[n].data[i]);

}else{

sum[n] += Number(0);

}

}

table += '<tr>'

+ '<td>' + num + '</td>'

+ '<td>' + axisData[i] + '</td>';

for(var j=0;j<series.length;j++){

if(series[j].data[i]){

table += '<td>' + formatNum(series[j].data[i]) + '</td>';

}else{

table += '<td>' + 0 + '</td>';

}

}

table += '</tr>';

}

//最后一行加上合计

table += '<tr>'+ '<td>' + (num+1) + '</td>' + '<td>合计</td>';

for(var n=0;n<series.length;n++){

if(String(sum[n]).indexOf(".")>-1)

table += '<td>' + formatNum((Number(sum[n])).toFixed(2)) + '</td>';

else

table += '<td>' + formatNum(Number(sum[n])) + '</td>';

}

table += '</tr></tbody></table>';

return table;

}

//千分位显示

function formatNum(strNum) {

if(strNum.length <= 3) {

return strNum;

}

if(!/^(\+|-)?(\d+)(\.\d+)?$/.test(strNum)) {

return strNum;

}

var a = RegExp.$1,

b = RegExp.$2,

c = RegExp.$3;

var re = new RegExp();

re.compile("(\\d)(\\d{3})(,|$)");

while(re.test(b)) {

b = b.replace(re, "$1,$2$3");

}

return a + "" + b + "" + c;

}

不得不说,echarts的数据视图的默认展示很难看,如果需要很好的展示,需要自己写一个方法,来重新展示调用 function getTable(),表格的class使用的是bootstrap的如果里面的数据想用千分位展示,则在需要展现的数据上调用formatNum()方法

数据视图里的数据我是倒序排列的,去除“刷新按钮”toolbox“”{lang:['数据视图','关闭']}

存为图片的图片名在saveAsImage的name的属性设置

老实说,echarts制作图表很方便,而且很美观,功能还多,兼容大部分的浏览器,确实是一个很好的前端制图工具,只是配置项很多,需要自己去慢慢的钻研,学会使用它,每一项都可以自定义,还有很多的触发事件,现在只是知道echarts的九牛一毛还是需要多多学习

标签: #ajax序号例子