在上一篇文章 Echarts 多曲線「斷點」問題解決方法 中說到了Angular 項目中要使用 Echarts 的方法。html
說明了本身解決當「每一條曲線的橫座標不相同」時,在各條曲線上,它們的值採用數組類型,也就是 series.data[i] (i 表示該條曲線的索引)的值採用數組類型,第一個值對應橫座標的某一個值,第二個值是縱座標的值。數組
最近在項目中遇到了另一個問題:echarts
1. 在圖表中要顯示多條曲線spa
2. 圖例的個數和曲線的條數不一樣code
對於圖例的值,也就是 legend["data"] 的值,是一個數組,它若是不設置的話,將從 series.name 中獲取。(建議不設置,一來減小代碼量,更容易維護;二來可以保證圖例名稱和曲線名稱一致)htm
首先說明解決方法(以一條曲線兩個圖例爲例):對象
1. 獲取到所有圖例,做爲橫座標的數據。也就是 legend.data 的值。如 legend: { data:['郵件營銷', '聯盟廣告'] }blog
2. 在沒有值的曲線上(假設第二條曲線),它們的值採用使用空數組,也就是 series[1].data = [];索引
下面舉例說明:ip
option = { title: { text: '折線圖堆疊' }, tooltip: { trigger: 'axis' }, legend: { data:['郵件營銷','聯盟廣告'] // 這裏有兩個圖例 }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, toolbox: { feature: { saveAsImage: {} } }, xAxis: { type: 'category', boundaryGap: false, data: ['週一','週二','週三','週四','週五','週六','週日'] }, yAxis: { type: 'value' }, series: [ // 這裏設置兩條曲線,對於沒有值的曲線,data 屬性的值設置爲空數組,而且 name 和 legend["data"] 的值對應 { name:'郵件營銷', smooth: true, type:'line', stack: '總量', data:[120, 132, 101, 134, 90, 230, 210] }, { name:'聯盟廣告', smooth: true, type:'line', stack: '總量', data:[] } ] };
這時就繪製出了曲線個數和圖例個數不一樣的曲線
延伸:
若是不設置 legend.data 的值,曲線會有什麼變化?
因爲上面 legend 也沒有設置其它屬性,那麼它就變爲空對象 legend: {}
option = { title: { text: '折線圖堆疊' }, tooltip: { trigger: 'axis' }, legend: { // 和上面代碼比較,只有這裏有區別 }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, toolbox: { feature: { saveAsImage: {} } }, xAxis: { type: 'category', boundaryGap: false, data: ['週一','週二','週三','週四','週五','週六','週日'] }, yAxis: { type: 'value' }, series: [ { name:'郵件營銷', smooth: true, type:'line', stack: '總量', data:[120, 132, 101, 134, 90, 230, 210] }, { name:'聯盟廣告', smooth: true, type:'line', stack: '總量', data:[] } ] };
不過,繪製成的曲線的結果沒有變化。
legend.data[i] 官宣以下:
若是 data 沒有被指定,會自動從當前系列中獲取。多數系列會取自 series.name 或者 series.encode 的 seriesName 所指定的維度。如餅圖和漏斗圖等會取自 series.data 中的 name。