堆叠柱状图tooltip属性添加合计/总数

如上图

 1、堆叠柱状图实际上就是将好几个柱子叠加起来成一根

<template>
  <div id="echarts12"></div>
</template>

<script setup>
import * as echarts from "echarts";
const emit = defineEmits();

const props = defineProps({
  echartList: {
    default: [{ cityName: "济南", parkArea: 18, parkArea1: 15, paraks: 28, asd: 18, asff: 19 },
    { cityName: "济南", parkArea: 15, parkArea1: 14, paraks: 13, asd: 12, asff: 2 },
    { cityName: "济南", parkArea: 16, parkArea1: 19, paraks: 16, asd: 12, asff: 14 },
    { cityName: "济南", parkArea: 12, parkArea1: 14, paraks: 23, asd: 19, asff: 12 },
    { cityName: "济南", parkArea: 11, parkArea1: 17, paraks: 20, asd: 12, asff: 18 },
    { cityName: "济南", parkArea: 15, parkArea1: 14, paraks: 13, asd: 12, asff: 2 },
    { cityName: "济南", parkArea: 16, parkArea1: 19, paraks: 16, asd: 12, asff: 14 },
    { cityName: "济南", parkArea: 12, parkArea1: 15, paraks: 23, asd: 14, asff: 12 },],
  },
  dolDate: {
    defalut: false
  }
});
const initChart = () => {
  let xdata = [];
  let ydata1 = [];
  let ydata2 = [];
  let ydata3 = [];
  let ydata4 = [];
  let ydata5 = [];//对比日期
  let xdataid = [];
  props.echartList.forEach((item) => {
    xdata.push(item.cityName);
    // xdataid.push(item.cityId);
    ydata1.push(item.parkArea);
    ydata2.push(item.parkArea1);
    ydata3.push(item.paraks);
    ydata4.push(item.asd);
    ydata5.push(item.asff);
    // ydata2.push(item.water);
  });
  const machart = echarts.init(document.getElementById("echarts12"));
  var defaultShowNum = 10; // 默认显示的数据条数

  var start = 0;
  var end = Math.min(defaultShowNum, xdata.length) / xdata.length * 100;
  var option = {

    tooltip: {
      trigger: 'axis',
      axisPointer: {
        // 坐标轴指示器,坐标轴触发有效
        type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
      },
      //这里是tooltip也就是提示框
      formatter: (params) => {
        let res = ''
        let sum = 0
        for (let i = 0; i < params.length; i++) {
          if (params[i].value != 0) {
            sum += params[i].data
            res += `<span style="background: ${params[i].color}; height:10px; width: 10px; border-radius: 50%;display: inline-block;margin-right:10px;"></span> ${params[i].seriesName} :${params[i].data}<br/>`
          }
        }
        return (
          `<span style="background: blue; height:10px; width: 10px; border-radius: 50%;display: inline-block;margin-right:10px;"></span> 总数 :${sum}<br/>` +
          res
        )
      }
    },


    dataZoom: [
      {
        type: 'slider', // 缩放条类型为滑动条
        show: true, // 显示缩放条
        start: start, // 根据数据计算的开始位置
        end: end, // 根据数据计算的结束位置
        bottom: '5%', // 距离底部的距离
        height: 5, // 设置高度
      },
      {
        type: 'inside', // 内置缩放条
        start: start,
        end: end,
      },
    ],
    calculable: true,

    color: ["#579AFF", "#B1B1F0", "#F7BEBE", '#BDF6E6'],
    grid: {
      top: "10%",
      bottom: "20%",
      left: "4%",
      right: "1%",
      // containLabel: true,
    },
    xAxis: [
      {
        type: "category",
        data: xdata,
        axisTick: {
          show: false, // 不显示刻度
        },
        axisLabel: {
          margin: 10,
          color: "#3D3D3D",
          textStyle: {
            fontSize: 12,
          },
        
        },
      },
    ],
    yAxis: [
      {
        type: "value",

      },
    ],

    series: [
      {
        name: '1最下面',
        type: 'bar',
        stack: 'total',
        data: ydata1,
        itemStyle: {
          color: '#5793f3' // 设置柱状图颜色
        }
      },
      {
        name: '2往上走',
        type: 'bar',
        stack: 'total',
        data: ydata2,
        itemStyle: {
          color: '#d14a61' // 设置柱状图颜色
        }
      },
      {
        name: '3中间',
        type: 'bar',
        stack: 'total',
        data: ydata3,
        itemStyle: {
          color: '#675bba' // 设置柱状图颜色
        }
      },
      {
        name: '4最上面的下面',
        type: 'bar',
        stack: 'total',
        data: ydata4,
        itemStyle: {
          color: '#ffa500' // 设置柱状图颜色
        }
      },
      {
        name: '5最上面',
        type: 'bar',
        stack: 'total',
        data: ydata5,
        itemStyle: {
          color: '#32cd32' // 设置柱状图颜色
        }
      }

    ],
  };
 
  machart.setOption(option);
  setTimeout(() => {
    window.addEventListener("resize", resizeFn);
  }, 100);
  const resizeFn = () => {
    return machart.resize();
  };
  machart.on("click", (params) => {
    if (params.componentType === "series") {
      const dataIndex = params.dataIndex;
      const yValue = xdata[dataIndex]; // 获取对应柱子的y值
      // const cidtyid = xdataid[dataIndex]; // 获取对应柱子的y值
      emit("changedi", yValue);

      // 在这里你可以对获取到的y值进行其他操作,比如弹窗显示等
    }
  });
};
setTimeout(() => {
  initChart();
}, 800);
defineExpose({
  initChart,
});
onBeforeUnmount(() => {
  // 离开页面必须进行移除,否则会造成内存泄漏,导致卡顿
  window.removeEventListener("resize", initChart);
});
watch(
  () => props.echartList,
  (newVal, oldVal) => {
    if (newVal !== oldVal) {
      initChart();
    }
  }
);
</script>

<style scoped>
#echarts12 {
  width: 100%;
  height: 90%;
  /* height:    calc(30vh- 10px); */
}
</style>

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 ECharts 中,堆叠柱状图tooltip 默认会显示出每个柱子的数值,以及该柱子所属堆叠组的总数值。如果你想定制堆叠柱状图tooltip,可以使用 ECharts 提供的 formatter 属性来实现。 下面是一个示例代码,展示如何使用 formatter 来自定义堆叠柱状图tooltip: ```javascript option = { tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' // 显示阴影效果 }, formatter: function(params) { var seriesName = params[0].seriesName; var stackName = params[0].name; var totalValue = params[0].data; var currentValue = params[0].value; return seriesName + '<br/>' + stackName + ': ' + currentValue + '<br/>' + 'Total: ' + totalValue; } }, xAxis: { type: 'category', data: ['Category A', 'Category B', 'Category C'] }, yAxis: { type: 'value' }, series: [ { name: 'Series 1', type: 'bar', stack: 'stackGroup', data: [10, 20, 30] }, { name: 'Series 2', type: 'bar', stack: 'stackGroup', data: [15, 25, 35] } ] }; ``` 在这个示例中,我们通过 formatter 函数来自定义 tooltip内容。我们使用 `params` 参数来获取当前鼠标悬停的柱子的信息,并将其展示在 tooltip 中。`params` 是当前柱子的信息对象,你可以从中获取到 seriesName(系列名称)、name(堆叠组名称)、value(当前柱子值)以及 data(堆叠总数值)等信息。 这样,你可以根据自己的需要来定制 tooltip内容,例如显示堆叠组的百分比、添加单位等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值