Echarts开发人物关系网络图

转载地址:https://blog.csdn.net/xqhadoop/article/details/78286270

引言: 
人物关系可视化是将人与人之之间通过某属性进行连接而形成的关系网络,通过可视化技术展现出来。而baidu的Echarts是一款非常敏捷,迅速,酷炫的js可视化工具

1.Echarts介绍

ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。

ECharts 3 中更是加入了更多丰富的交互功能以及更多的可视化效果,并且对移动端做了深度的优化。

ECharts 提供了常规的折线图,柱状图,散点图,饼图,K线图,用于统计的盒形图,用于地理数据可视化的地图,热力图,线图,用于关系数据可视化的关系图,treemap,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。

Echarts官网地址为: http://echarts.baidu.com

2.人物关系网络

<html>
<head>
  <meta charset="UTF-8">
<title>用户详细信息</title>
 <style>
body { margin-top: 3em; background: #eee; color: #555; font-family: "Open Sans", "Segoe UI", Helvetica, Arial, sans-serif; }
p, p a { font-value: 12px;text-align: center; color: #888; }
</style>
    <script src="echarts-all.js"></script>
    <script src="js/drawl.js"></script>
   </head>
  <body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
   <div style="padding:20px;width:100%;height:100%;"> 
        <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
               <div id="main" style="width: 1104px;height:464px;">
               </div>
 </div>
  <!-- 进行ajax发送并接收数据,最后根据接收的数据完成可视化工作 -->
  <script>
  var myChart = echarts.init(document.getElementById('main'), 'macarons');
  //创建Nodes
  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
            links=[
                {source : '丽萨-乔布斯', target : '乔布斯', weight : 1, name: '女儿\r'},
                {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}
            ]
categoryArray=[{name:"核心人物"},{name:"家人"},{name:"朋友"}]
jsondata={"categories":categoryArray,"nodes":nodes,"links":links}  
//数据格式为Json格式
createGraph(myChart,jsondata)
  </script>
 </body>
</html>

echarts-all.js是经过压缩的echarts项目涉及的全部代码,可直接从官网下载。

drawl.js代码如下:

function getOption(graphInfo){
//给节点设置样式
graphInfo.nodes.forEach(function (node) {
    //node.itemStyle = null;//
    //node.symbolSize = node.size;//强制指定节点的大小   
    // Use random x, y
    node.x = node.y = null;
    node.draggable = true;
});


title=graphInfo['title']
nodes=graphInfo['nodes']
links=graphInfo['links']
categories=graphInfo['categories']

//设置option样式
option = {
    title : {
        text:title,
        x:'right',
        y:'bottom'
    },
    tooltip : {
        trigger: 'item',
        formatter: '{a} : {b}'
        //formatter: function(params){//触发之后返回的参数,这个函数是关键
        //if (params.data.category !=undefined) //如果触发节点
        //   window.open("http://www.baidu.com")
        //}
    },
    color:['#EE6A50','#4F94CD','#B3EE3A','#DAA520'],
    toolbox: {
        show : true,
        feature : {
            restore : {show: true},
            magicType: {show: true, type: ['force', 'chord']},
            saveAsImage : {show: true}
        }
    },
    legend: {
        x: 'left',
        data: categories.map(function (a) {//显示策略
            return a.name;
        })
    },
    series : [
        {
            type:'force',
            name : title,
            ribbonType: false,
            categories : categories,
            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:nodes,
            links :links
        }
    ]
};
return option   
}
function createGraph(myChart,mygraph){
//设置option样式
option=getOption(mygraph)
//使用Option填充图形
myChart.setOption(option);
//点可以跳转页面
myChart.on('click', function (params) {
            var data=params.value
            //点没有source属性
            if(data.source==undefined){
                nodeName=params.name
                window.open("http://www.baidu.com")
            }

});
//myChart.hideLoading();
}

可视化结果图如下:

这里写图片描述

  • 9
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
ECharts是一个基于JavaScript的开源可视化库,它可以用来制作各种各样的酷炫表,如折线、柱状、饼、K线等等。ECharts支持多种数据格式的导入,如JSON、XML、CSV等,同时也支持多种表的展示方式,如动态表、3D表等。除此之外,ECharts还提供了丰富的交互式功能,如悬停提示、可拖拽、可缩放等,使得用户可以更加直观地理解和分析数据。ECharts具有简单易用、性能出色、表风格多样等特点,因此受到了众多开发者的青睐。 以下是几个酷炫的ECharts表示例: 1. 折线:折线可以用来展示数据随时间变化的趋势,可以帮助用户更好地理解和预测数据的变化趋势。在ECharts中,可以通过设置不同的参数来制作不同样式的折线。 2. 柱状:柱状可以用来展示不同类别之间的数据比较,如展示不同商品的销售量比较等等。在ECharts中,可以通过设置不同的参数来制作不同样式的柱状。 3. 饼:饼可以用来展示数据的占比关系,如展示不同品牌的市场占比等等。在ECharts中,可以通过设置不同的参数来制作不同样式的饼。 4. K线:K线主要用于展示股票等金融数据的变化趋势,可以帮助用户更好地理解和预测股票价格的变化趋势。在ECharts中,可以通过设置不同的参数来制作不同样式的K线。 总之,ECharts是一个非常强大且易于使用的可视化库,可以帮助用户更加直观地理解和分析数据。无论是制作简单的表还是复杂的表,ECharts都可以满足您的需求。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值