怎样利用百度Echart实现动态图表,麻烦有做过的大神们指点一二
给你我的代码示例吧、
var queryDiskBuy=function(){
var ajaxSettings=$.extend({},commonSettings,{
url : params.queryDiskBuyUrl,
success : function(data){
diskBuyHandler(data);
},
error : errorHandler,
data : {
recent : recent,
}
});
$.ajax(ajaxSettings);
};
var diskBuyHandler=function(data){
if(!data.success||data.list==null){
tab("security-tab1-main",dataAllIn,"买入时股票涨幅(%)","当天收盘涨幅(%)",'买入分布');
return;
}
for(var i=0;i<data.list.length;i++){
var temp=[data.list[i].matchInAscend,data.list[i].stockAscend,data.list[i].matchInAmt];
dataAllIn[i]=temp;
}
tab("security-tab1-main",dataAllIn,"买入时股票涨幅(%)","当天收盘涨幅(%)",'买入分布');
};
tab函数:
var tab = function(id,dataAll,xName,yName,title2){
var myChart = echarts.init(document.getElementById(id));
var markLineOpt = {
animation: false,
label: {
normal: {
formatter: '',
textStyle: {
align: 'right'
}
}
},
lineStyle: {
normal: {
type: 'solid',
color:"#ccc"
}
},
tooltip: {
show:false
},
data: [[{
coord: [-10,-10],
symbol: 'none'
}, {
coord: [10, 10],
symbol: 'none'
}]]
};
var option = {
color: [
'rgba(251,75,75,1)','blue'
],
grid: [
{
x:"70",
x2: '40',
y: '5%',
width: '70%',
height: '70%'
}
],
tooltip: {
formatter: function (obj) {
var value = obj.value;
return '<div style=" font-size: 14px">'
+ '买入时股票涨幅'+ ':' + value[0] + '%'+ '<br>'
+ '当天收盘涨幅'+ ':' + value[1]+ '%'+ '<br>'
+ '成交金额' + ':' + value[2]+ '元'+ '<br>';
+ '</div>'+ '<br>'
}
},
xAxis: [
{
name:xName,
type : 'value',
nameLocation:"middle",
nameGap:"30",
scale:true,
min:'-10',
max:'10',
splitNumber:10,//设置x轴间隔数
axisLine:{
onZero:false,//坐标轴不从0开始
lineStyle:{
color:"#9DA1A7"
}
},
axisTick:{
show:false
}
}
],
yAxis: [
{
name:yName,
nameLocation:"middle",
nameGap:"30",
type : 'value',
scale:true,
min:'-10',
max:'10',
splitNumber:10,//设置y轴间隔数
axisLine:{
onZero:false, //坐标轴不从0开始
lineStyle:{
color:"#9DA1A7"
}
},
axisTick:{
show:false
}
}
],
series: [
{
name: '买入分布',
type: 'scatter',
xAxisIndex: 0,
yAxisIndex: 0,
data: dataAll,
markLine: markLineOpt,
itemStyle:{
normal:{
color:function(data){
if(parseFloat(data.data[0]) <parseFloat( data.data[1]))
{
if("买入分布"==title2){
return "red";
}else{
return "green";
}
}
else{
if("卖出分布"==title2){
return "red";
}else{
return "green";
}
}
}
}
},
symbolSize: function (data) {
return Math.abs(data[2]) /1000;
}//节点大小范围
}
]
};
myChart.setOption(option);
}
不知道你要怎么动态,我的项目做的是超级动态。
思路:
1.echars3.0中不同图像只有option不同,所以配置从option入手
2.每个echarts都需要用一个div或者其他元素承载,所以要生成一个多图的页面,一定要为option做唯一标识处理
3.尽量做到模板化
比如我的折线和柱状图模板如下:
{
color: [#default_static_color],
tooltip : {
trigger: 'axis',
axisPointer : {
type : 'shadow'
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
legend:{
data:[#default_static_legend]
},
xAxis : [
{
type : 'category',
data : [#default_static_xAxis],
axisTick: {
alignWithLabel: true
}
}
],
yAxis : [{type : 'value'}],
series : [#default_static_series]
}
这里只对option做了处理,
然后配置的时候会根据模板生成进一步的freemarker模板。
还有很多其他模板。
希望可以帮到你....