echarts 堆叠柱状图-顶部显示总和

效果图

 VUE代码

 

<el-card class="box-card">
        <div ref="chart" style="height: 420px" />
    </el-card>
this.chart = echarts.init(this.$refs.chart);
      this.chart.setOption({
        title: {
          text: '每日投屏次数图示'
        },
        tooltip: {
          trigger: 'axis'
        },
        legend: {
          data: []
        },
        grid: {
          left: '3%',
          right: '4%',
          bottom: '3%',
          containLabel: true
        },
        toolbox: {
          feature: {
            saveAsImage: {}
          }
        },
        xAxis: {
          type: 'category',
          boundaryGap: true,
          data: this.chartData.date || []
        },
        yAxis: {
          type: 'value'
        }
      });

// 柱状图公共属性
      const baseBar = {type: 'bar', barWidth: '50px', label:{show: true, position:'inside'}}    
// 每日数据图      
      let seriesData = [];   
      this.$refs.table.$children.forEach((item) => {
        if (item.prop && item.prop != "createDate") {       
          const dataList = this.chartData[item.prop] || [];
          seriesData.push(Object.assign({}, baseBar, {name: item.label, stack: 'day', data: dataList}))
        }
      });
      // 堆叠柱状图
      if (seriesData.length > 0) {
          let totalList = []
          const listSize = seriesData[0].data.length
          for (let i = 0; i < listSize; i++) {
            // 对象数据过滤并分组求和
            totalList.push(seriesData.map(current => current.data[i]).reduce((total, current) => total + current))
          }
          // 点状图显示总和
          seriesData.push({name: "总和", type: 'scatter', symbolSize: 1, label:{show: true, position:'top'}, data: totalList})
          // console.log("totalList", totalList)
        }
      
      this.chart.setOption({
        xAxis: {
          data: this.chartData.date || []
        },  
        series: seriesData
      });	

数据:

this.chartData={
		"data":[
			{
				"createDate":"2023-07-18星期二",
				"live":278,
				"program":285,
				"review":278,
				"weekday":3
			},
			{
				"createDate":"2023-07-19星期三",
				"live":287,
				"program":294,
				"review":304,
				"weekday":4
			},
			{
				"createDate":"2023-07-20星期四",
				"live":268,
				"program":308,
				"review":297,
				"weekday":5
			},
			{
				"createDate":"2023-07-21星期五",
				"live":222,
				"program":198,
				"review":245,
				"weekday":6
			},
			{
				"createDate":"2023-07-22星期六",
				"live":139,
				"program":171,
				"review":171,
				"weekday":7
			},
			{
				"createDate":"2023-07-23星期天",
				"live":72,
				"program":80,
				"review":83,
				"weekday":1
			},
			{
				"createDate":"2023-07-24星期一",
				"live":0,
				"program":1,
				"review":0,
				"weekday":2
			}
		],
		"date":[
			"2023-07-18星期二",
			"2023-07-19星期三",
			"2023-07-20星期四",
			"2023-07-21星期五",
			"2023-07-22星期六",
			"2023-07-23星期天",
			"2023-07-24星期一"
		],
	}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以通过以下步骤在 ECharts顶部添加总和: 1 首先,确保您已经引入 ECharts 的库文件,并创建了一个用于染表的容。 2. 创建一个包含所有数据的数组,在每个子数组中,第一个值是类别名称,后续的值是对应类别的数据。 3. 使用 ECharts 提供的 `series` 配置项来配置堆。在 `series` 的 `data` 属性中,将每个类别的数据传入。 4. 在堆的 `series` 配置项中,使用 `label` 属性来设置标签样式。其中,`formatter` 属性可以用来自定义显示的文本内容。 下面是一个示例代码: ```javascript // 创建堆的容器 var container = document.getElementById('chart-container'); var chart = echarts.init(container); // 示例数据 var data = [ ['类别1', 100, 200, 300], ['类别2', 150, 250, 350], ['类别3', 200, 300, 400] ]; // 配置堆的 series var series = data.map(function (item) { return { name: item[0], type: 'bar', stack: '总量', label: { show: true, position: 'top', formatter: function (params) { // 计算总和 var sum = 0; for (var i = 1; i < item.length; i++) { sum += item[i]; } return '总和: ' + sum; } }, data: item.slice(1) }; }); // 配置表的 option var option = { legend: {}, tooltip: {}, xAxis: { data: ['一月', '二月', '三月'] }, yAxis: {}, series: series }; // 渲染表 chart.setOption(option); ``` 在上述示例中,我们通过 `formatter` 函数计算并显示了每个类别的数据总和,并设置了标签显示在柱顶部。 您可以根据自己的需求修改示例代码中的数据和配置项,以适应您的项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值