Echarts 曲線數少於圖例數解決方法

在上一篇文章 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] 官宣以下:

legend.data[i] 

若是 data 沒有被指定,會自動從當前系列中獲取。多數系列會取自 series.name 或者 series.encode 的 seriesName 所指定的維度。如餅圖和漏斗圖等會取自 series.data 中的 name。

相關文章
相關標籤/搜索