学习记录 echarts tooltip超出限制 echarts显示滚动条

解决方案:将其做成悬浮层 显示出来

<template>
  <div
    class="chart-warp"
  >
    <v-chart
      :options="options"
      class="echarts"
    ></v-chart>
  </div>
</template>
<script>
import * as ServiceApi from '../../../api/index'

import ChartResizeMixin from '@/share/mixins/ChartResizeMixin'
export default {
  mixins: [ChartResizeMixin],
  props: {
    list: {
      type: Object,
      default: null
    }

  },
  data () {
    return {
      echartsSingleList: {},
      XAxis: [],
      YAxis: [],
      min: 2,
      max: 4

    }
  },

  computed: {
    options () {
      return {
        title: {
          text: '单体电阻趋势图',
          textStyle: { // 标题字体属性
            fontWeight: 'normal',
            fontSize: '14px'
          },
          left: '80'
        },
        tooltip: {
          trigger: 'axis', // 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
          axisPointer: {
            type: 'shadow'// 阴影指示器
          },
          formatter: function (params) {
            let str = ''
            for (let i = 0; i < params.length; i++) {
              str += '<p>' + params[i].marker + params[i].seriesName + ':' + params[i].value + '</p>'
            }
            const tooltipHtml =
          '<div  style="width:fit-content;padding-right:20px;max-height:200px;overflow-y:auto"> ' +

          params[0].axisValue +
          str +
          '</div>'
            return tooltipHtml
          },
          appendToBody: true,
          // 可以进入tooltip
          enterable: true
        },

        grid: { // 直角坐标系内绘图网格
          left: 80, // grid 组件离容器左侧的距离。
          right: 30, // grid 组件离容器右侧的距离。
          bottom: 15, // grid 组件离容器下侧的距离。
          top: 30, // grid 组件离容器上侧的距离。
          containLabel: true // grid 区域是否包含坐标轴的刻度标签。
        },
        xAxis: {
          type: 'category', // 坐标轴类型 类目轴,适用于离散的类目数据
          show: true, // 是否显示x轴
          axisLine: {
            show: true// 是否显示坐标轴轴线。
          },
          axisTick: {
            show: false // 是否显示坐标轴刻度。
          },
          data: this.XAxis // 横轴坐标值
        },
        dataZoom: [{
          type: 'slider', // 给x轴设置滚动条
          show: true, // flase直接隐藏图形
          xAxisIndex: [0],
          bottom: 10,
          height: 10,
          showDetail: false,
          startValue: 0, // 滚动条的起始位置
          endValue: 9 // 滚动条的截止位置(按比例分割你的柱状图x轴长度)
        },
        {
          type: 'inside', // 设置鼠标滚轮缩放
          show: true,
          xAxisIndex: [0],
          startValue: 0,
          endValue: 9
        }
        ],
        yAxis: {
          type: 'value', // 坐标轴类型 数值轴,适用于连续数据。
          axisLine: {
            show: true// 是否显示坐标轴轴线。
          },
          axisTick: {
            show: true// 是否显示坐标轴刻度。
          },
          boundaryGap: ['0', '0.2'],
          min: this.min,
          max: this.max
        },
        series:
          Object.keys(this.YAxis).map((item, index) => {
            return {
              name: item,
              type: 'line',
              smooth: true,
              symbolSize: 3,
              symbol: 'circle',
              data: this.YAxis[index]
            }
          })

      }
    }

  },
  methods: {
    // 请求趋势图数据
    async getCellTrendListData () {
      const { data } = await ServiceApi.getCellTrendList(this.list)
      this.echartsSingleList = data
      const time = []
      const minMax = []
      // 拿到x轴坐标
      // 遍历每一个下面的数据 拿到时间
      Object.keys(data).map((item, index) => {
        // 拿到所有时间  去重
        data[item].map(o => {
          if (!time.includes(o.kpiTime)) {
            time.push(o.kpiTime)
          }
          if (!minMax.includes(o.resistance)) {
            minMax.push(o.resistance)
          }
        })
      })
      // 设置最大值最小值
      this.min = Math.floor(Math.min(...minMax))
      this.max = Math.ceil(Math.max(...minMax))
      // 坐标轴排序
      this.XAxis = time.sort((a, b) => a.kpiTime > b.kpiTime ? -1 : 1)
      // 拿到y轴

      Object.keys(data).map((key, item) => {
        this.YAxis[key] = []

        data[key].map(o => {
          // if (!this.YAxis[key].includes(o.resistance)) {
          this.YAxis[key].push(o.resistance)
          // }
        })
      })
    }

  },
  created () {

    // console.log(this.list)
  },
  mounted () {
    this.getCellTrendListData()
  },
  // 卸载时候
  destroyed () {
    /*    debugger
    this.refs.echartsSingle.style.diaplay = 'none' */
  },
  watch: {

  }
}
</script>
<style lang="scss" scoped>
.chart-warp {
  position: relative;
}
.echarts {
  width: 550px;
  height: 500px!important;
}
:deep(.canvas) {
  width: 550px;
  height: 500px!important;
}
</style>

2. echarts显示滚动条  配置datazoom

<template>
  <div class="chart-warp">
    <v-chart
      :options="options"
      class="echarts"
    ></v-chart>
  </div>
</template>
<script>
import * as ServiceApi from '../../../api/index'

import ChartResizeMixin from '@/share/mixins/ChartResizeMixin'

export default {
  mixins: [ChartResizeMixin],
  props: {
    list: {
      type: Object,
      default: null
    }
  },
  data () {
    return {
      echartsData: [],
      XAxis: [],
      min: 0,
      max: 1

    }
  },
  computed: {
    options () {
      return {
        title: {
          text: '蓄电池组电容量趋势图',
          left: 'center',
          textStyle: { // 标题字体属性
            fontWeight: 'normal',
            fontSize: '14px'
          }
        },
        tooltip: {
          trigger: 'axis', // 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
          axisPointer: {
            type: 'shadow'// 阴影指示器
          }
        },
        legend: {

          show: true, // echarts上面 线条(图例)名称提示
          right: 10 // 图例组件离容器右侧的距离。
        },
        grid: { // 直角坐标系内绘图网格
          left: '3%', // grid 组件离容器左侧的距离。
          right: 30, // grid 组件离容器右侧的距离。
          bottom: 15, // grid 组件离容器下侧的距离。
          top: 30, // grid 组件离容器上侧的距离。
          containLabel: true // grid 区域是否包含坐标轴的刻度标签。
        },
        xAxis: {
          type: 'category', // 坐标轴类型 类目轴,适用于离散的类目数据
          show: true, // 是否显示x轴
          axisLine: {
            show: true// 是否显示坐标轴轴线。
          },
          axisTick: {
            show: false // 是否显示坐标轴刻度。
          },
          data: this.XAxis // 横轴坐标值
        },
        yAxis:
          {
            type: 'value',
            name: '电容量',
            min: this.min,
            max: this.max

          },

        series: [
          {
            name: '电容量',
            type: 'line',
            smooth: true,
            symbolSize: 3,
            symbol: 'circle',
            data: this.echartsData.map(item => item.capacity)
          }

        ],
        dataZoom: [{
          type: 'slider', // 给x轴设置滚动条
          show: true, // flase直接隐藏图形
          xAxisIndex: [0],
          bottom: 10, //距离下方高度
          height: 10, //滚动条高度
          showDetail: false,
          startValue: 0, // 滚动条的起始位置
          endValue: 9 // 滚动条的截止位置(按比例分割你的柱状图x轴长度)
        },
        {
          type: 'inside', // 设置鼠标滚轮缩放
          show: true,
          xAxisIndex: [0],
          startValue: 0,
          endValue: 9
        }
        ]
      }
    }

  },
  created () {
    this.getBatteryTrialListData()
    // console.log(this.list)
  },
  mounted () {
  },
  methods: {
    // echarts  电池组数据
    async getBatteryTrialListData () {
      const { data } = await ServiceApi.getBatteryTrialList(this.list)

      this.echartsData = data.sort((a, b) => a.kpiTime > b.kpiTime ? 1 : -1)
      //  获取x轴数据
      this.echartsData.map(item => this.XAxis.push(item.kpiTime))
      const minMax = []
      this.echartsData.map(item => minMax.push(item.capacity))
      // 设置最大值最小值
      this.min = Math.floor(Math.min(...minMax))
      this.max = Math.ceil(Math.max(...minMax))
    }

  },
  watch: {
    list: {
      deep: true,
      immediate: true,
      handler (val) {
        // console.log(val)
      }
    },
    XAXis: {
      deep: true,
      immediate: true,
      handler (val) {
        // console.log(val)
      }
    }
  }
}
</script>
<style lang="scss" scoped>
.chart-warp {
  position: relative;
}
.echarts {
  width: 500px;
  height: 550px;
}
:deep(.canvas) {
  width: 500px;
  height: 550px;
}
</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 当echartstooltip超出屏幕时,可以采取以下几种方案来解决这个问题。 方案1:使用tooltip的formatter函数来自定义tooltip的内容格式化。可以根据实际情况,将tooltip的内容进行换行展示,以适应较长的内容。可以参考\[1\]中的代码示例,使用`<br/>`标签来实现换行。 方案2:使用tooltip的extraCssText配置项,给tooltip添加样式,使文本支持换行展示。可以参考\[2\]中的代码示例,通过设置`white-space: normal; word-break: break-all;`来实现文本的换行展示。 方案3:使用formatter和position相结合使用。可以参考\[3\]中的代码示例,通过自定义formatter函数来控制tooltip的内容展示,同时通过position函数来控制tooltip的位置。这样可以在tooltip超出屏幕时,将其位置调整到屏幕内部。 需要注意的是,使用formatter和position相结合使用的缺点是,弹出的宽度无法自适应,可能会影响原有的布局,产生滚动条。因此,在展示数据量很大的情况下,宽度较大的tooltip建议使用这种方式。 希望以上方案可以帮助您解决echarts tooltip超出屏幕的问题。 #### 引用[.reference_title] - *1* *2* [echarts tooltip内容过多超出显示范围](https://blog.csdn.net/qq_39364032/article/details/114651447)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [echarts tooltips数据内容过多超出显示范围](https://blog.csdn.net/xiaoxiannvh/article/details/126174412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值