echarts 关系图, 动态修改高度

情景:由于人物关系复杂,可以有几个 ——几十个(上百个),所以固定范围内(如:500高度)可能放不下,或者太空。所以可以根据node节点(也可根据其他判断条件)来动态修改 div / canvas高度。如果还是超出(eg:节点或者关系多),可添加roam:true的属性实现可平移拖拽 / 缩放。

返回的数据:

html:

<div>
          <h5>人物关系图谱</h5>
          <div id="relationship" :style="`height:${relationshipHeight}px`" v-if="graph.nodes" />
           <div class="nodatatext" v-else>暂未发现该人物的关系图谱</div>
</div>

js:

export default {
    data() {
        relationshipHeight: 460
    },
    //方法一:(mounted中加载echarts) dom挂载再调用,因为created钩子里面dom还没挂载
    mounted() {
        this.relationEchart()
    },
    methods: {
        //方法二:通过接口获取数据
        getData() {
            getData().then((res) => {
                // 根据返回的nodes数量,动弹展示box高度
                let len = res.nodes.length //
                if (len <= 10) {
                    this.relationshipHeight = 460
                } else {
                    this.relationshipHeight = 580
                }
                this.$nextTick(() => {
                    // 待页面加载完再更新echarts
                    this.relationEchart(this.relationshipHeight);
                })
            })

        },
        relationEchart(relationshipHeight) {
            const myChart = echarts.init(document.getElementById(line));
            /*
            * ..
            */
            //清除画布,这样重新绘制的时候就不会遗留之前的数据
            myChart.clear();
            // 绘制图表
            myChart.setOption(options);

            // 这个counst.length是渲染数据的长度
            //第一个50是为我给每个柱状图的高度,第二个50是为柱状图x轴内容的高度(大概的)
            const autoHeight = relationshipHeight
            //以下两个方法改变高度都可以
            /**
            *  myChart.getDom().style.height = autoHeight + "px";
            */
            myChart.resize({
                height: autoHeight
            })
        },
    }
}
经验分享 程序员 微信小程序 职场和发展