echarts 生成简易关系图
var nodes = [{ x: 500, y: 1000, nodeName: '收入户\n80%', symbolSize: 10 }, { x: 100, y: 800, nodeName: '销售服务户\n8%' }, { x: 350, y: 800, nodeName: '产品户\n67.5%' }, { x: 700, y: 800, nodeName: '综合户\n0.5%' }, { x: 950, y: 800, nodeName: '利润户\n>=1.8%' }, { x: 50, y: 600, nodeName: '内勤\n3%' }, { x: 150, y: 600, nodeName: '4S店\n5%' }, { x: 250, y: 600, nodeName: '管理费用\n2.2%' }, { x: 450, y: 600, nodeName: '生产成本\n67.5%' }, { x: 650, y: 600, nodeName: '费用及其他\n0.17%' }, { x: 750, y: 600, nodeName: '薪资\n0.33%' }, { x: 10, y: 400, nodeName: '薪酬\n0.87%' }, { x: 50, y: 400, nodeName: '费用\n0.36%' }, { x: 90, y: 400, nodeName: '销售激励\n1.77%' }, { x: 200, y: 400, nodeName: '薪资\n1.05%' }, { x: 250, y: 400, nodeName: '费用\n0.15%' }, { x: 300, y: 400, nodeName: '产值激励\n1%' }, { x: 400, y: 400, nodeName: 'PC\n21%' }, { x: 450, y: 400, nodeName: '供应链\n21.5%' }, { x: 500, y: 400, nodeName: '物流中心\n4%' }, { x: 550, y: 400, nodeName: '施工服务\n21%' }, ]; var charts = { nodes: [], lines: [{ coords: [ [500, 1000], //节点坐标 [500, 900] //子节点起点(没有子节点,则不需要) ] }, { coords: [ [500, 900], //连接父节点起点 [100, 900], //节点衔接点(折线拐点) [100, 850], //节点坐标 [100, 700] //子节点起点 ] }, { coords: [ [500, 900], [350, 900], [350, 800], [350, 700] ] }, { coords: [ [500, 900], [700, 900], [700, 800], [700, 700] ] },{ coords: [ [500, 900], [950, 900], [950, 800] ] }, { coords: [ [100, 700], [50, 700], [50, 600], [50, 500] ] }, { coords: [ [100, 700], [150, 700], [150, 600] ] }, { coords: [ [350, 700], [250, 700], [250, 600], [250, 500] ] }, { coords: [ [350, 700], [450, 700], [450, 600], [450, 500] ] }, { coords: [ [700, 700], [650, 700], [650, 600] ] }, { coords: [ [700, 700], [750, 700], [750, 600] ] }, { coords: [ [50, 500], [10, 500], [10, 400] ] }, { coords: [ [50, 500], [50, 500], [50, 400] ] }, { coords: [ [50, 500], [90, 500], [90, 400] ] } , { coords: [ [250, 500], [200, 500], [200, 400] ] }, { coords: [ [250, 500], [250, 500], [250, 400] ] }, { coords: [ [250, 500], [300, 500], [300, 400] ] }, { coords: [ [450, 500], [400, 500], [400, 400] ] }, { coords: [ [450, 500], [450, 500], [450, 400] ] }, { coords: [ [450, 500], [500, 500], [500, 400] ] }, { coords: [ [450, 500], [550, 500], [550, 400] ] } ] }; for (var j = 0; j < nodes.length; j++) { const { x, y, nodeName, symbolSize } = nodes[j]; var node = { nodeName, value: [x, y], symbolSize: symbolSize || 5 } charts.nodes.push(node) }; function SetChart() { var myChart = echarts.init(document.getElementById('myChart')); option = { backgroundColor: "#f2f2f2", xAxis: { min: 0, max: 1000, show: false, type: 'value' }, yAxis: { min: 0, max: 1000, show: false, type: 'value' }, series: [{ type: 'graph', coordinateSystem: 'cartesian2d', label: { normal: { show: true, position: 'bottom', color: '#04FDB8' } , textStyle: { color: '#04FDB8' } }, itemStyle: { normal: { label: { show: true, color: '#04FDB8', formatter: function (item) { return item.data.nodeName } }, color: '#5b5b5b' } }, data: charts.nodes, }, { type: 'lines', polyline: true, coordinateSystem: 'cartesian2d', lineStyle: { normal: { type: 'dashed', width: 1, curveness: 0.2, color: '#956FD4' } },
//动画 effect: { show: true, trailLength: 0.1, symbol: 'arrow', color: '#FFA12F', symbolSize: 8 }, data: charts.lines }] }; myChart.setOption(option); };
<div id="myChart" style="width:100%;min-height: 500px;"></div>
效果:
引用echarts.js:
<script src="../js/echarts/echarts.js"></script>