今天接到一個任務,顯示重疊圖表,一開始在echart官網中找到具體列子,但是在本地測試時,發現樣式完全不一樣,猜測原因是版本的不同,後續又在網上查找原因,發現是一個屬性的設置原因。
先展示echart2實例與本地數據的差別:
對於相同的option設置:
echart2實例:
本地圖表顯示:
發現不同地方位置:首先是顏色不同,第二是實例中有重疊,本地沒有重疊;第三實例中柱狀圖上有顯示數據,本地沒有。
後來找到具體原因:缺少stack屬性。stack屬性是疊加,不是覆蓋。
後來添加上stack屬性的圖表:
代碼:
<label id='bar' style="height: 700px;right:50px;width:1600px;"></label>
<script type="text/javascript">
var myBar = echarts.init(document.getElementById('bar'));
option = {
title : {
text: 'xxx數據',
subtext: '(12月之內)',
left:150
},
tooltip : {
trigger: 'axis'
},
//重新修改legend默認顏色
//按照legend data的順序排列,設置自定義顏色
color:['#FF8800','#FFDDAA','#00FFFF','#99FFFF'],
legend: {
data:[]
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
magicType : {show: true, type: ['line', 'bar']},
restore : {show: true},
saveAsImage : {show: true}
}
},
calculable : true,
grid: {y: 70, y2:30, x2:20},
xAxis : [
{
type : 'category',
data : []
},
{
type : 'category',
axisLine: {show:false},
axisTick: {show:false},
axisLabel: {show:false},
splitArea: {show:false},
splitLine: {show:false},
data : []
}
],
yAxis : [
{
type : 'value',
axisLabel:{formatter:'{value}'}
}
],
series : []
};
myBar.setOption(option);
var ajaxBar = function() {
$.ajax({
url : Global.ctx +'/xxx',
success : function(responseText) {
console.log(responseText);
//請求成功時處理
option.legend.data = responseText.datum.legend;
option.xAxis[0].data = responseText.datum.xAxis;
option.xAxis[1].data = responseText.datum.xAxis;
var serieslist = responseText.datum.series;
for (var i = 0; i < serieslist.length; i++) {
option.series[i] = serieslist[i];
}
myBar.setOption(option, true);
},
complete : function() {
//請求完成的處理
},
error : function() {
//請求出錯處理
alert("加載失敗");
}
})
}
window.setTimeout(ajaxBar, 100);
</script>
ajax返回數據格式: