vue中echart的tooltip自定义显示内容

这篇具有很好参考价值的文章主要介绍了vue中echart的tooltip自定义显示内容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vue中echart的tooltip自定义

目的:让tooltip显示自定义格式数据,甚至是显示横纵坐标以外的数据。

1.先介绍一下常用情况
option:{
          title: {
            text: '温度信号对比图'
          },
          tooltip: {
            trigger: 'axis'
          },
          legend: {
            data:['室内温度','信号质量'],
            textStyle:{
              fontSize:18
            }
          },
          color: ['#54a0ff','#c23531'],
          grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            containLabel: true
          },
          toolbox: {
            itemSize:22,
            feature: {
              saveAsImage: {}
            }
          },
          xAxis: {
            type: 'category',
            boundaryGap: false,
            data: []
          },
          yAxis: {
            max: function(value){
              return Math.round(1.1*value.max)
            },
            min:function(value){
              return Math.round(0.9*value.min)
            },
            type: 'value'
          },
          series: [
            {
              name:'室内温度',
              type:'line',
              smooth:0.5,
              data:[]
            },
            {
              name:'信号质量',
              type:'line',
              smooth:0.5,
              data:[]
            }
          ]
        },

tooltip的trigger有三种选项“item”“axis”“none”,选择axis就是显示横坐标的内容。

这样设置,鼠标滑过对应点时,tooltip就会显示横坐标内容和对应纵坐标的温度和信号。

2.若要对显示内容进行数据处理

例如:增加单位、增加说明等。

需要在tooltip中加入formatter属性。 formatter支持字符串模板和回调函数两种形式。

字符串模板格式例如:

formatter: '{b0}: {c0}<br />{b1}: {c1}'//字符串模板含义见官网https://www.isqqw.com/echarts-doc/zh/option.html#tooltip.formatter

回调函数格式例如:

formatter:function(params){
    return 
    '房间号:'+params[0].name+'<br/>'+
    '温度:'+params[0].data+'℃'+'<br/>'+
    '信号:'+params[1].data+'<br/>';
}

具体信息可通过console.log(params)查看。

3.若要显示横纵坐标以外的数据

例如横坐标是房间号,纵坐标是温度和信号,还要在

tooltip中显示对应数据的时间点。

首先需要对series的数据结构处理:

series: [
            {
              name:'室内温度',
              type:'line',
              smooth:0.5,
              data:[
                {
                  value:0,
                  time:0
                }
              ]
            },
            {
              name:'信号质量',
              type:'line',
              smooth:0.5,
              data:[]
            }
          ]

在温度data中增加value和time,value用于显示温度数值。

然后在数据处理时,将温度和时间一并放入:

parseData(){
        this.option.xAxis.data=this.dataList.map(item=>item.roomNum)
        this.option.series[0].data = this.dataList.map(item => ({ value: item.temp, time: item.timestamp }));
        this.option.series[1].data=this.dataList.map(item=>item.signalQuality)
      },

注意:不能写成:

parseData(){
        this.option.xAxis.data=this.dataList.map(item=>item.roomNum)
        this.option.xAxis.data.value=this.dataList.map(item=>item.temp)
        this.option.xAxis.data.time=this.dataList.map(item=>item.timestamp)
        this.option.series[1].data=this.dataList.map(item=>item.signalQuality)
      },

在第二行中,将 this.dataList 中的 temp 属性映射到 this.option.series[0].data 中的 value 属性。但是,在第三行中,又将 this.dataList 中的 timestamp 属性映射到 this.option.series[0].data 中的 time 属性。这意味着将覆盖 value 属性,而不是将 time 属性添加到 data 数组中。

然后在formatter中这样设置:

tooltip: {
            trigger: 'axis',
            formatter:function(params){
						  return '房间号:'+params[0].name+'<br/>'+
              '温度:'+params[0].data.value+'℃'+'<br/>'+
              '信号:'+params[1].data+'<br/>'+
              '时间:'+params[0].data.time;
            }
          },

就能显示横坐标信息、纵坐标信息、以及对应时间了。

4.bug查询与代码优化

以上代码在只选择一条曲线,鼠标滑动到tooltip上时会报错。经查找发现是因为在选中一条曲线时formatter的params中只有params[0]没有params[1]。所以代码做了以下优化:

formatter: function(params) {
    let message = `房间号:${params[0].name}<br/>`;
    for (let i = 0; i < params.length; i++) {
        message += `${params[i].seriesName}:${params[i].data.value}<br/>`;
    }
    message += `时间:${params[0].data.time}`;
    return message;
}

同时,为保证在只选择信号页面时也有时间所以在series数据结构和数据处理方法中也做了改变

series: [
    {
        name:'室内温度',
        type:'line',
        smooth:0.5,
        data:[
            {
                value:0,
                time:0
            }
        ]
    },
    {
        name:'信号质量',
        type:'line',
        smooth:0.5,
        data:[
            {
                value:0,
                time:0
            }
        ]
    }
]

//处理返回的数据
      parseData(){
        this.option.xAxis.data=this.dataList.map(item=>item.roomNum)
        this.option.series[0].data = this.dataList.map(item => ({ value: item.temp, time: item.timestamp }));
        this.option.series[1].data = this.dataList.map(item => ({ value: item.signalQuality, time: item.timestamp }));
      },

这次就没有什么问题了。文章来源地址https://www.toymoban.com/news/detail-490723.html

到了这里,关于vue中echart的tooltip自定义显示内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue echarts kline 在tooltip trigger: ‘axis‘时 自定义参数名已经加振幅参数

    1 trigger: \\\'axis\\\' 报错 Cannot read properties of undefined (reading \\\'1\\\') TypeError: Cannot read properties of undefined (reading \\\'1\\\') at formatter (webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/HelloWorld.vue?vuetype=scriptlang=js:3

    2024年02月13日
    浏览(37)
  • Vue3 el-tooltip 根据内容控制宽度大小换行和并且内容太短不显示

    tooltip 根据内容自动换行 如果内容超出显示省略号显示,不超出不显示 tooltip 组件 使用

    2024年02月09日
    浏览(31)
  • echarts自定义tooltip,给tooltip增加百分号%

    支持返回 HTML 字符串或者创建的 DOM 实例。 (params: Object|Array, ticket: string, callback: (ticket: string, html: string)) = string | HTMLElement | HTMLElement[] 在 trigger 为 ‘axis’ 的时候,或者 tooltip 被 axisPointer 触发的时候,params 是多个系列的数据数组。其中每项内容格式同上,并且, { componentT

    2024年02月15日
    浏览(48)
  • echarts自定义x轴和tooltip数据格式

    x轴和y轴数据格式如下 修改后xy轴数据格式如下 需求: 将json数据转成折线图需要的数据格式,并且x轴始终为0 - 23 点,并且折线图上的点数不会缺失,对应时间有点位的就展示,没有就空

    2024年01月19日
    浏览(38)
  • echarts的横向柱状图文字省略,鼠标移入显示内容 vue3

    效果图 如果是在x轴上的,就在x轴上添加 triggerEvent: true, 如果是y轴就在y轴添加,我是在y轴上添加的 并且自定义的方法(我取名为 extension ) 然后我放在末尾引入的 数据格式

    2024年02月04日
    浏览(51)
  • Echarts图表之dispatchAction 操作 固定tooltip显示框

    echarts中支持的图表行为,通过dispatchAction触发。 使用dispatchAction操作来固定tooltip显示框,无需鼠标事件响应进入页面默认固定显示框,方便数据展示。   dispatchAction固定tooltip显示框需要 tooltip属性为axis    myChart.setOption(option);   //装配mychart  myChart.dispatchAction({         // 使

    2024年02月14日
    浏览(29)
  • 基于Vue2.0仿Element UI的el-tooltip实现一个气泡框组件,支持多数据类型的显示和内容为空时不显示气泡框

    场景:因为有个需求就是鼠标经过可多选的 el-select 选择器时,需要有个气泡框显示已选的内容,其实 el-tooltip 气泡框可以满足需求,就是用 el-tooltip 气泡框来包裹 el-select 选择器,但是当选择器一个也没选中,即内容为空时不应该也显示气泡框,有点影响美观。应该就是若内

    2024年02月13日
    浏览(36)
  • 自定义vue指令,实现el-tooltip仅在文字溢出时显示,文字未溢出则不显示,复制即可使用

    在项目里遇到了这种需求,想到el-table里的show-overflow-tooltip属性就有这种效果,在参考了一些网上的文章以及show-overflow-tooltip跟el-tooltip的源码后,觉得使用自定义指令的方式来实现这个需求会很方便,于是便有了以下代码 2.1. 默认无参数用法 没有传递值给指令的时候,将使用

    2024年02月04日
    浏览(36)
  • 3D圆环图Echarts + 图例滚动显示 + tooltip鼠标经过的弹框滚动显示

    效果图如下: 这是一个3D效果的Echarts圆环图,每个类别的数据相当于高度,图例可以滚动显示,tips也可以滚动显示,完整代码看最后。 1.图例滚动显示效果 2.tooltip鼠标经过弹框滚动效果 完整代码如下(脚手架写法):

    2024年02月14日
    浏览(30)
  • echarts雷达图图例自定义以及tooltip动态展示一维数据

     实现效果: 虽然上面实现了图例自定义,但是仔细看会发现图例与文字不在一条水平线上,利用富文本配置,对height进行调整,实现图例图片与文字对齐。 实现效果: 官方文档中默认显示该维度的所有数据 而遇到的需求是显示鼠标悬浮该轴的数据对比 实现:   虽然实现

    2024年02月16日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包