詳解Echarts堆疊圖

一、堆疊圖基本介紹

Echarts是百度開源的一個基於JavaScript的數據可視化庫,擁有豐富的圖表類型和可擴展性,堆疊圖是其中的一種圖表類型。堆疊圖能夠將多個系列的數據堆疊起來,形成一個整體。

堆疊圖的特點是:同一類別的數據在圖中會被一起堆疊,每個數據點的值都被分成了若干部分,每個部分代表該數據點屬於哪個系列,每個數據點所有部分的和表示該類別的總數。堆疊圖也可以通過設置offset屬性來進行堆疊條形圖或者堆疊面積圖等。

下面是一個簡單的堆疊圖的示例代碼:

// 基於準備好的dom,初始化echarts實例
var myChart = echarts.init(document.getElementById('main'));

// 指定圖表的配置項和數據
var option = {
    title: {
        text: '堆疊圖示例'
    },
    tooltip: {
        trigger: 'axis',
        axisPointer: {
            type: 'cross',
            label: {
                backgroundColor: '#6a7985'
            }
        }
    },
    legend: {
        data:['郵件營銷','聯盟廣告','視頻廣告']
    },
    toolbox: {
        feature: {
            saveAsImage: {}
        }
    },
    grid: {
        containLabel: true
    },
    xAxis: {
        type: 'category',
        boundaryGap: false,
        data: ['周一','周二','周三','周四','周五','周六','周日']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name:'郵件營銷',
            type:'line',
            stack: '總量',
            areaStyle: {},
            emphasis: {
                focus: 'series'
            },
            data:[120, 132, 101, 134, 90, 230, 210]
        },
        {
            name:'聯盟廣告',
            type:'line',
            stack: '總量',
            areaStyle: {},
            emphasis: {
                focus: 'series'
            },
            data:[220, 182, 191, 234, 290, 330, 310]
        },
        {
            name:'視頻廣告',
            type:'line',
            stack: '總量',
            areaStyle: {},
            emphasis: {
                focus: 'series'
            },
            data:[150, 232, 201, 154, 190, 330, 410]
        }
    ]
};

// 使用剛指定的配置項和數據顯示圖表。
myChart.setOption(option);

二、堆疊圖的主要參數

1. stack

stack是堆疊圖的核心參數,它指定了每個系列所使用的堆疊ID。如果兩個系列的stack相同,則它們會疊在一起,不同的stack值會將系列彼此分離,不在同一條垂直方向上堆疊。

series: [
    {
        name: '郵件營銷',
        type: 'bar',
        stack: '廣告',
        data: [120, 132, 101, 134, 90, 230, 210]
    },
    {
        name: '聯盟廣告',
        type: 'bar',
        stack: '廣告',
        data: [220, 182, 191, 234, 290, 330, 310]
    },
    {
        name: '視頻廣告',
        type: 'bar',
        stack: '廣告2',
        data: [150, 232, 201, 154, 190, 330, 410]
    }
]

2. areaStyle

areaStyle用來設置區域填充樣式,支持多種填充效果。當堆疊圖有多個系列時,可以將之前的系列的樣式設為空,只保留最上層的系列顯示顏色來實現區域填充效果。

series: [
    {
        name:'郵件營銷',
        type:'line',
        stack: '總量',
        areaStyle: {},
        emphasis: {
            focus: 'series'
        },
        data:[120, 132, 101, 134, 90, 230, 210],
        // 設為空,則只保留最上層的系列顯示顏色來實現區域填充效果
        itemStyle: {
            normal: {
                color: ''
            }
        }
    },
    ...
]

3. yAxis和xAxis

yAxis和xAxis是分別用來設置縱軸和橫軸的參數,包括軸線、刻度、標籤等。

yAxis: {
    type: 'value',
    axisLabel: {
        formatter: '{value} 元'
    }
},
xAxis: {
    type: 'category',
    data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
}

三、堆疊圖小技巧

1. 反轉坐標軸

可以通過設置坐標軸類型為’category’和’time’來實現X軸和Y軸的反轉。當需要顯示X軸為數值類型而不是類別類型時,設置X軸的坐標類型為’value’。

xAxis: {
    type: 'value'
},
yAxis: {
    type: 'category',
    data: ['周一','周二','周三','周四','周五','周六','周日']
}

2. 防止數據順序混亂

在堆疊圖中,數據的堆疊順序決定了圖表的呈現順序。默認情況下,Echarts將系列的數據按照數組順序顯示,因此需要對數據進行排序來保證不同系列的數據堆疊順序正確。

// 對數據按照從大到小的順序排序
data: data.sort(function (a, b) {
    return a.value - b.value;
})

3. 堆疊圖和其它圖表進行聯動

可以通過使用Echarts的事件來實現堆疊圖和其它圖表之間的聯動。可以通過設置series的名稱和id來實現不同圖表之間的數據聯通。

// 堆疊圖點擊事件
myChart.on('click', function (params) {
    // params中包含了堆疊圖被點擊的數據信息,可以通過其name屬性進行數據過濾和聯動
    console.log(params.name);
    // 獲取聯動圖表
    var otherChart = echarts.getInstanceByDom(document.getElementById('otherChart'));
    // 聯動更新
    otherChart.setOption({
        series: [{
            id: 'series1', // 聯通的series的id
            data: [...]
        }]
    });
});

四、結語

Echarts堆疊圖是一種非常實用的數據可視化圖表類型,它不僅可以分析數據中的各個部分之間的關係,還能夠方便地表現整體與部分之間的比例關係。通過不斷對堆疊圖的學習和實踐,可以掌握Echarts強大的可視化分析能力。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/239551.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:17
下一篇 2024-12-12 12:17

相關推薦

  • Echarts 地圖 Label 增加背景圖

    本文將從多個方面對 Echarts 地圖 Label 增加背景圖進行詳細的闡述。 一、背景圖的作用 為 Echarts 地圖添加背景圖可以使 Label 更加直觀、美觀,提升視覺效…

    編程 2025-04-29
  • ECharts地圖輪播

    本文將從插件基礎、數據準備及處理、地圖呈現、輪播控制等方面,對ECharts地圖輪播進行詳細闡述。 一、插件基礎 ECharts官方提供了一個名為「echarts-gl」的插件,它…

    編程 2025-04-27
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性感測器,能夠同時測量加速度和角速度。它由三個感測器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變數讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25

發表回復

登錄後才能評論