Echarts实现关系图

首先贴上代码:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>关系图案例</title>
    <!-- 引入 ECharts 文件 -->
    <script type="text/javascript" src="js/echarts-all.js"></script>
    <script type="text/javascript" src="js/jquery.js"></script>
</head>
<body>
<!-- 为 ECharts 准备一个具备大小(宽高)的 容器 -->
<div  style="width:1000px;height:800px;" id="gx"></div>tooltip
</body>
</html>
<script type="text/javascript">
    var myChart = echarts.init(document.getElementById('gx'));
    option = {
        title : {
            text: '人物关系:乔布斯',
            subtext: '数据来自人立方',
            x:'right',
            y:'bottom'
        },
        tooltip : {
            trigger: "axis",
            trigger: 'item',
            formatter: '{a} : {b}'
//            formatter:function (param) {
//                var data = param.data;
//                var links = option.series[0].links;
//                var nodes = option.series[0].nodes;
//                if (
//                    data.source !== undefined
//                    && data.target !== undefined
//                ) { //点击的是边
//                    var sourceNode = nodes.filter(function (n) {return n.name == data.source})[0];
//                    var targetNode = nodes.filter(function (n) {return n.name == data.target})[0];
//                    return ("选中了边 " + sourceNode.name + ' -> ' + targetNode.name + ' (' + data.weight + ')');
//                } else { // 点击的是点
//                    return ("选中了" + data.name + '(' + data.value + ')');
//                }
//            }
        },
        toolbox: {
            show : true,
            feature : {
                restore : {show: true},
                magicType: {show: true, type: ['force', 'chord']},
                saveAsImage : {show: true}
            }
        },
        legend: {
            x: 'left',
            data:['人物','家人','朋友']
        },
        series : [
            {
                type:'force',
                name : "人物关系",
                ribbonType: false,
                categories : [
                    {
                        name: '人物'
                    },
                    {
                        name: '家人'
                    },
                    {
                        name:'朋友'
                    }
                ],
                itemStyle: {
                    normal: {
                        label: {
                            show: true,
                            textStyle: {
                                color: '#333'
                            }
                        },
                        nodeStyle : {
                            brushType : 'both',
                            borderColor : 'rgba(255,215,0,0.4)',
                            borderWidth : 1
                        },
                        linkStyle: {
                            type: 'curve'
                        }
                    },
                    emphasis: {
                        label: {
                            show: false
                            // textStyle: null      // 默认使用全局文本样式,详见TEXTSTYLE
                        },
                        nodeStyle : {
                            //r: 30
                        },
                        linkStyle : {}
                    }
                },
                useWorker: false,
                minRadius : 15,
                maxRadius : 25,
                gravity: 1.1,
                scaling: 1.1,
                roam: 'move',
                nodes:[
                    {category:0, name: '乔布斯', value : 10, label: '乔布斯\n(主要)'},
                    {category:1, name: '丽萨-乔布斯',value : 2},
                    {category:1, name: '保罗-乔布斯',value : 3},
                    {category:1, name: '克拉拉-乔布斯',value : 3},
                    {category:1, name: '劳伦-鲍威尔',value : 7},
                    {category:2, name: '史蒂夫-沃兹尼艾克',value : 5},
                    {category:2, name: '奥巴马',value : 8},
                    {category:2, name: '比尔-盖茨',value : 9},
                    {category:2, name: '乔纳森-艾夫',value : 4},
                    {category:2, name: '蒂姆-库克',value : 4},
                    {category:2, name: '龙-韦恩',value : 1},
                ],
                links : [
                    {source : '丽萨-乔布斯', target : '乔布斯', weight : 1, name: '女儿'},
                    {source : '保罗-乔布斯', target : '乔布斯', weight : 2, name: '父亲'},
                    {source : '克拉拉-乔布斯', target : '乔布斯', weight : 1, name: '母亲'},
                    {source : '劳伦-鲍威尔', target : '乔布斯', weight : 2},
                    {source : '史蒂夫-沃兹尼艾克', target : '乔布斯', weight : 3, name: '合伙人'},
                    {source : '奥巴马', target : '乔布斯', weight : 1},
                    {source : '比尔-盖茨', target : '乔布斯', weight : 6, name: '竞争对手'},
                    {source : '乔纳森-艾夫', target : '乔布斯', weight : 1, name: '爱将'},
                    {source : '蒂姆-库克', target : '乔布斯', weight : 1},
                    {source : '龙-韦恩', target : '乔布斯', weight : 1},
                    {source : '克拉拉-乔布斯', target : '保罗-乔布斯', weight : 1},
                    {source : '奥巴马', target : '保罗-乔布斯', weight : 1},
                    {source : '奥巴马', target : '克拉拉-乔布斯', weight : 1},
                    {source : '奥巴马', target : '劳伦-鲍威尔', weight : 1},
                    {source : '奥巴马', target : '史蒂夫-沃兹尼艾克', weight : 1},
                    {source : '比尔-盖茨', target : '奥巴马', weight : 6},
                    {source : '比尔-盖茨', target : '克拉拉-乔布斯', weight : 1},
                    {source : '蒂姆-库克', target : '奥巴马', weight : 1}
                ]
            }
        ]
    };
//    var ecConfig = require('echarts/config');
    function focus(param) {
        var data = param.data;
        var links = option.series[0].links;
        var nodes = option.series[0].nodes;
        if (
            data.source !== undefined
            && data.target !== undefined
        ) { //点击的是边
            var sourceNode = nodes.filter(function (n) {return n.name == data.source})[0];
            var targetNode = nodes.filter(function (n) {return n.name == data.target})[0];
            console.log("选中了边 " + sourceNode.name + ' -> ' + targetNode.name + ' (' + data.weight + ')');
        } else { // 点击的是点
            console.log("选中了" + data.name + '(' + data.value + ')');
        }
    }
    myChart.on( echarts.config.EVENT.CLICK, focus);

    myChart.on( echarts.config.EVENT.FORCE_LAYOUT_END, function () {
        console.log(myChart.chart.force.getPosition());
    });

    myChart.setOption(option);
</script>


由于js包的版本不同所以造成各种各样的问题,下面提供一个下载包的链接:https://www.bootcdn.cn/echarts/ 

这里用的是

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现人物关系力导向,我们需要使用echarts中的关系(graph)组件。下面是一个简单的示例: ```javascript // 初始化echarts表 var myChart = echarts.init(document.getElementById('main')); // 指定表的配置项和数据 var option = { // 设置关系类型 series: [{ type: 'graph', // 指定节点数据 data: [ { name: '张三', symbolSize: 80 }, { name: '李四', symbolSize: 60 }, { name: '王五', symbolSize: 50 }, { name: '赵六', symbolSize: 40 }, { name: '钱七', symbolSize: 30 }, ], // 指定节点间的关系数据 links: [ { source: '张三', target: '李四' }, { source: '张三', target: '王五' }, { source: '李四', target: '赵六' }, { source: '王五', target: '赵六' }, { source: '钱七', target: '赵六' }, ], // 指定节点的样式 itemStyle: { color: '#00BFFF' }, // 指定边的样式 lineStyle: { color: '#000' }, // 指定节点标签的样式 label: { show: true, position: 'right', formatter: '{b}' }, // 指定节点间的力引导作用 force: { repulsion: 200 } }] }; // 使用刚指定的配置项和数据显示表。 myChart.setOption(option); ``` 在上面的示例中,我们首先使用`echarts.init()`方法初始化一个echarts表,然后指定了一个关系(graph)类型的系列。在系列中,我们指定了节点数据和节点间的关系数据,使用了一些简单的样式设置,最后使用了`force`属性来指定节点间的力引导作用。 在实际使用中,我们可以根据需要调整节点数据、边数据、样式和力引导作用等参数,从而实现更加复杂和生动的人物关系力导向
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值