情景:由于人物关系复杂,可以有几个 ——几十个(上百个),所以固定范围内(如: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
})
},
}
}
版权声明:本文为Shimeng_1989原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。