echarts树图关系图

 项目场景:

要求实现以上图片展示的样式,用的是echarts


 数据格式:

var data = [{
    name: "主节点主节点主节点",
    children: [{
        name: "分节点分节点分节点分节点1",
    }, {
        name: "分节点分节点分节点分节点2",
    }, {
        name: "分节点分节点分节点分节点3",
    }, {
        name: "分节点分节点分节点分节点4",
    }]
}];

实现代码

myChart.showLoading();


var data = [{
    name: "主节点主节点主节点",
    children: [{
        name: "分节点分节点分节点分节点1",
    }, {
        name: "分节点分节点分节点分节点2",
    }, {
        name: "分节点分节点分节点分节点3",
    }, {
        name: "分节点分节点分节点分节点4",
    }]
}];

myChart.hideLoading();
myChart.setOption(option = {
     backgroundColor: '#fff',
        series: [
            {
                type: 'tree',
                // name: '',
                data: data,
                itemStyle: {
                    normal: {
                        lineStyle: {
                            color: '#000',
                            width: 1,
                            type: 'solid' // 'curve'|'broken'|'solid'|'dotted'|'dashed'
                        },
                        
                    },
                },
                top: '0%',
                bottom:'10%',
                right: '50%',
                left:'0',
                symbolSize: 1,
                initialTreeDepth: 2,
                edgeShape:'curve', //曲线curve和折线polyline两种,
                emphasis:{disabled:true},
                label: {
                    normal: {
                        position: 'center',
                        verticalAlign: 'middle',
                        align: 'left',
                        backgroundColor: '#003594',
                        color: '#fff',
                        padding: 3,
                        borderRadius:[8],
                        formatter: [
                            '{box|{b}}'
                        ].join('\n'),
                        rich: {
                            box: {
                                height: 28,
                                color: '#fff',
                                padding: [10, 13],
                                align: 'center',
                                fontSize:20,
                            }
                        }
                    }
                },
                leaves: {
                    label: {
                        normal: {
                            position: 'center',
                            verticalAlign: 'middle',
                            align: 'left',
                            backgroundColor: '#E5EAF4',
                            borderRadius:[5],
                            formatter: [
                                '{box|{b}}'
                            ].join('\n'),
                            rich: {
                                box: {
                                    height: 20,
                                    color: '#003594',
                                    padding: [8, 10],
                                    align: 'center',
                                    fontSize:16,
                                }
                            }
                        }
                    }
                },
                expandAndCollapse: false,
                animation:false,
            },
        ]
});

以上。

后续测试问题一:

数据返回的多少 不一致,高度不可固定,不然纵向数据会堆叠在一起。如图:


 

解决办法:

找到了不设置固定高度,可以动态渲染高度的方法,可以根据返回数据的length,乘上我们单个数据的高度,设置一个基准值,超过基准值就使用长度×单个高速的值作为动态高度;实现代码如下:

 
    var myChart = echarts.init(document.getElementById(id));
    let option = {}    //此处为图表配置
    myChart.setOption(option, true);
    //基准值为350,也相当于css设置的最小高度;
    var autoHeight = chart_jsonData[0].children.length * 60 > 350 ?         
    chart_jsonData[0].children.length * 60 : 350;
    myChart.getDom().style.height = autoHeight + "px";
    myChart.getDom().childNodes[0].style.height = autoHeight + "px";
    myChart.getDom().childNodes[0].childNodes[0].setAttribute("height",autoHeight);
    myChart.getDom().childNodes[0].childNodes[0].style.height = autoHeight + "px";
    //图表可以根据宽度变化自适应
    myChart.resize();
    window.onresize = myChart.resize;

猜你喜欢

转载自blog.csdn.net/m0_49017085/article/details/131847516