0
点赞
收藏
分享

微信扫一扫

有没有办法让Echarts图表高度随数据量进行变化

毅会 2023-04-23 阅读 89

Echarts设置高度随数据量变化

echarts所有的图表都需要设置宽高才能在页面中显示出来。

如果数据量固定,那么只需要根据页面设置合适的图表宽高就行了;那如果数据量不固定,在同样的宽高下,数据量多则会显示不全,数据量少则又会有大片空白,影响页面美观。

那我可不可以让图表根据数量的多少进行动态配置高度呢?

当然可以,下面是我在项目中写的,这里只作一个参考,将一些关键的代码记录下来。。。

<template>
  <div>
    <div id="pieChart" ref="pieChart" :style="{ width: '100%', height:pieChartHight }"/>
  </div>
</template>
<script>
import { pieApi } from '@/Api/basic'

export default {
  name: 'pie',
  data () {
    return {
      chartData: [], // 饼图数据
      pieChartHight: '230px', // 饼图基础高度
    }
  },
  mounted () {
    this.getData()
  },
  methods: {
    // 获取接口数据
    getData () {
      let queryData = {
        startDayLong: this.$moment().startOf('day').valueOf(),
        endDayLong: this.$moment().endOf('day').valueOf(),
      }
      this.$toast.loading({ message: '加载中...', forbidClick: true })
      pieApi(queryData).then(res => {
        // 这里的 res 是举例,实际根据后端接口返回的数据进行赋值
        if (res.code === 200) {
          res.data.map(item => {
            let pieObj = {
              name: item.name,
              value: item.value
            }
            // pieObj 中的属性可根据需要添加
            this.chartData.push(pieObj)
          })
          this.drawPie()
        } else {
          this.$toast(res.msg)
        }
        this.$toast.clear()
      }).catch(error => {
        console.log(error)
        this.$toast.clear()
      })
    },
    // 画图
    drawPie () {
      this.pieChart = this.$echarts.init(document.getElementById('pieChart'))
      let option = {
        ...
        // 这里为饼图数据显示的各项配置,根据项目需要自行配置
      }
      this.pieChart.setOption(option)
      
      // 50:显示的单条数据文本大致高度,根据实际需要进行调整
      // 150:基础高度,根据实际需要进行调整
      // 根据数据量动态设置饼图高度
      this.pieChartHight = option.series.data.length * 50 + 150
      // 根据数据量动态设置柱状图y轴的高度
      this.autoHeight = option.yAxis.data.length * 50 + 150
      
      // 获取ticChart容器的dom节点并赋值高度
      this.pieChart.getDom().style.height = this.pieChartHight + 'px'
      this.pieChart.getDom().childNodes[0].style.height = this.pieChartHight + 'px'
      this.pieChart.resize()
    },
  }
}
</script>

<style lang="scss" scoped>
</style>
举报

相关推荐

0 条评论