Board logo

标题: Dojo Chart 动态绘图及性能调优(2) [打印本页]

作者: look_w    时间: 2018-10-19 21:16     标题: Dojo Chart 动态绘图及性能调优(2)

添加曲线添加曲线可以直接使用 addPlot(‘plotName’,{args})函数。
plot 具体参数:
图 1 示例中,我们使用如下参数:
清单 6.Plot 参数
1
2
3
4
myChart.addPlot("default",{
type : 'Markers':
markerStroke:{width:1}
};




添加坐标轴使用 addAxis()函数添加坐标轴。
addAxis 函数参数介绍:
为图 1 示例添加坐标:
清单 7.添加坐标
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
myChart.addAxis("x", {

labelFunc : function(value){

var label = _getLabels(rawData,value);

return label;

},

max : totalPoint ,

labelSizeChange : true,

//dropLabels : false,

rotation : 15

});

myChart.addAxis("y, {

vertical : true,

fixUpper : "major",

fixLower : "major",

});

_getLabels : function(arrData,value){

// value not all int

if(arrData.length < 1 ||

arrData.length <= value||

parseInt(value)!=value

){

return '-';

}else{

//console.log('label:',arrData[value]);

return arrData[value].captureTime.toString();

}

};




清单 4 中已经将所需绘图的数据相应 y 值转换,所以,这里 y 坐标会直接显示 Number 类型数据,不需单独设置 lable。未设置’max’和’min’时,坐标轴会根据当前数据的最大最小值,自动 s 适配坐标范围。
在以时间为横轴的动态图中,需要将时间转换成 Dojox.Charting 能识别的数据,清单 7 中,通过_getLables()函数,得到 x 轴的坐标文本。其中,参数’value’指横坐标刻度的索引值,不全为整数,默认情况,x 轴会显示该索引值,所以需要将 rawData 中的 captureTime 字段数据替代 x 轴的索引值。初始化时,rawData 数据长度可能会比图的总点数少,而 labelFunc 的函数需要每个 x 轴上的 value 都有 label 的返回值,因此在_getLabels()函数中,当该点不存在时,仍然需要返回 ‘-‘ 或者’ ’(空格字符串)。
添加动态效果组件在图 1 的示例中,我们使用了如下三种效果组件。
Highlight 和 Magnify 使鼠标悬浮在该点时,该点能放大并且高亮显示。
Tooltip 使鼠标悬浮在该点时,显示提示信息。提示信息为 series 数据中的 tooltip 字段,该字段不存在时,默认显示该点 y 坐标值。
修改清单 4 中函数,可以同时转换 tooltip。
清单 8.tooltip 换函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
_valTrans = function (arrData,yName){
var series = [];
for(var obj in arrData){
var tmpItem = {};
if(arrData[obj][yName]!==undefined){
tmpItem.y = parseFloat(arrData[obj][yName]);
}else{      console.warn('series:',yName,'not exist.');
        }
       if(arrData[obj].message){
tmpItem.tooltip = arrData[obj][yName] : arrData[obj][yName]+'<br>'+arrData[obj].message;
tmpItem.fill = '#DF0101';
tmpItem.stroke = {color : '#DF0101'};
}
        series.push(tmpItem);
};
return series;
};






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0