精华内容
下载资源
问答
  • 我的另外一个博客echarts实现关系网络图,单个节点可无限扩散,方便实用易懂就是通过下方这个改的,所以这个是最原版的代码。大家可以参考一下,其实意思很明了,主人公张三是中心点,第二层就是展示他的朋友,第三层...

     我的另外一个博客echarts实现关系网络图,单个节点可无限扩散,方便实用易懂 就是通过下方这个改的,所以这个是最原版的代码。大家可以参考一下,其实意思很明了,主人公张三是中心点,第二层就是展示他的朋友,第三层是朋友的朋友,第四层循环下去。。。看看图吧。

    废话我就不多说,直接上代码。

     

    var myGraphData = [
            { "parentNode":"张三", "childNodes":["小明", "小华", "小杰", "小婷","小妍","小飞"]},
            { "parentNode":"小明", "childNodes":[ "小王", "小赵", "小钱" ] },
            { "parentNode":"小华", "childNodes":[ "小孙", "小李", "小周" ] },
            { "parentNode":"小杰", "childNodes":[ "小吴", "小郑" ] },
            { "parentNode":"小婷", "childNodes":[ "小谢", "小潘" ] },
            { "parentNode":"小妍", "childNodes":[ "小苏", "小陈" ] },
            { "parentNode":"小飞", "childNodes":[ "小郭", "小彭" ] },
            { "parentNode":"小王", "childNodes":[ "小a", "小b" ] },
            { "parentNode":"小孙", "childNodes":[ "小c", "小d" ] },
            { "parentNode":"小吴", "childNodes":[ "小e", "小f" ] },
        ];
    
    function getNodes(parentNode,childNodes,nodes){
        var pnode;
        for(var i=0; i<nodes.length; i++){
            if(parentNode == nodes[i].nodename){
                pnode = nodes[i];
            }
        }
        for(i=0; i<childNodes.length; i++){
            nodes.push({
                nodename : childNodes[i],
                nodelevel: pnode.nodelevel+1,
                parentnode: parentNode,
            });
        }
    }
            
    function setNodeData(nodes,listdata) {
        var size = 33;
        for(var i=0; i<nodes.length; i++){
            listdata.push({
                category: nodes[i].nodelevel,
                name: nodes[i].nodename,
                symbolSize: size,
                draggable: "true"
            });
        }
    }
            
    function setLinkData(childList, parentnode, links) {
        for(var i=0; i<childList.length; i++){
            links.push({
                // links根据节点名称建立,只适用于节点名称不一样的情况
                "source": childList[i],
                "target": parentnode,
                lineStyle: {
                    normal: {
                        color: 'source',
                    }
                }
            });
        }
    }    
    
    var listdata = [];
    var linksdata = []; 
    var nodes =[{
            "nodename":"张三",
            "nodelevel":0,
            "parentnode":0
        }];
    for(var i=0; i < myGraphData.length; i++){
        getNodes(myGraphData[i].parentNode,myGraphData[i].childNodes,nodes);
        setLinkData( myGraphData[i].childNodes, myGraphData[i].parentNode, linksdata);
    }
    setNodeData(nodes,listdata);  
    
    var levels = 0;
    var legend_data = [];
    var series_categories = [];
    var temp = ["一","二","三","四","五"];
    for(var i=0; i < nodes.length; i++){
        levels = Math.max(levels, nodes[i].nodelevel);
    }
    for(var i=0; i<=levels; i++){
       
        legend_data.push({
            name : i===0?'父节点':'层级'+temp[i],             
            icon : 'rect'
        });
        
        series_categories.push({
            name : i===0?'父节点':'层级'+temp[i],
            symbol : 'rect'
        });
       
    }
    
    option = {
        title: {
            text: "张三的朋友们进阶版",
            top: "top",
            left: "left",
            textStyle: {
                color: '#292421'
            }
        },
        tooltip: {
            formatter: '{b}'
        },
        backgroundColor: '#FFFFFF',
        legend: {
            show : true,
            data : legend_data,
            textStyle: {
                color: '#292421'
            },
            icon: 'circle',
            type: 'scroll',
            orient: 'horizontal',
            left: 10,
            top: 20,
            bottom: 20,
            itemWidth: 10,
            itemHeight: 10
        },
        animationDuration: 0,
        animationEasingUpdate: 'quinticInOut',
        series: [{
            name: '关系图',
            type: 'graph',
            layout: 'force',
            force: {
                repulsion: 300,
                gravity: 0.1,
                edgeLength: 15,
                layoutAnimation: true,
            },
            data: listdata,
            links: linksdata,
            categories: series_categories,
            roam: true,
            label: {
                normal: {
                    show: true,
                    position: 'bottom',
                    formatter: '{b}',
                    fontSize: 10,
                    fontStyle: '600',
                }
            },
            lineStyle: {
                normal: {
                    opacity: 0.9,
                    width: 0.5,
                    curveness: 0
                }
            }
        }]
    };
            

    如果你简单了解echarts的话应该可以看懂的,但是,如果看不懂没关系,翻翻我的博客,会有一些工作中遇到的问题,可以找找看是否可以解决你的疑问。如果还是有问题,可以+q:  983469079  交流。

    展开全文
  • networkx绘制人物关系网络图

    千次阅读 2019-03-18 13:45:07
    这里使用networkx进行人物关系网络图绘制。 def painting(): #绘制人物亲密度图 G = nx.Graph() # 绘制个人物之间的亲密关系 people_num = 0 edge_num = 0 for i in relationships: G.add_...

    在之前的基础上,通过对分析结果数据进行可视化分析,让结果更加一目了然。
    这里使用networkx进行人物关系网络图绘制。

    def painting(): #绘制人物亲密度图
        G = nx.Graph()  # 绘制个人物之间的亲密关系
        people_num = 0
        edge_num = 0
        for i in relationships:
            G.add_node(i)
            people_num += 1
            for n in relationships[i]:
                G.add_edge(i, n, weight=relationships[i][n])
                edge_num += 1
        print(people_num, edge_num)
        nx.draw(G, with_labels=True, edge_color='b', cmap=plt.cm.Oranges, pos=nx.spring_layout(G),
                node_color=range(people_num), node_size=900, width=1, font_size=8)
        plt.show()
    

    networkx可以根据权重来绘制网络图,这里就用人物之间的亲密度来作为权重进行绘图,绘图结果如下:
    在这里插入图片描述
    在这个图中,两个人物之间的距离越近,代表关系越亲密。

    展开全文
  • 【Python】Matplotlib画图(十)——基于networkx画关系网络图

    前言

    昨天才开始接触,鼓捣了一个下午,接下来会持续更新,如果哪里有错误的地方,望各位大佬指出,谢谢!

    数据描述

    两个文件,一个文件包含了网络图的节点,节点存在类别(0,1,2,3)四类,但是0类别舍去,不画出;另一个文件包含了网络图的边,数据基本特征如下:

                 

    图1中,id表示节点,b是类别;图2中,两个数字表示边连接的两个点。

    Networkx

    安装

    我的系统是Mac OS,直接在terminal输入sudo pip install networkx就可以安装,由于代码中涉及几个函数,在python3中会报错,我用python2.7.13实现的

    基本使用方法

    import networkx as nx                   #导入networkx包
    import matplotlib.pyplot as plt     #导入绘图包matplotlib(需要安装,方法见第一篇笔记)
    G =nx.random_graphs.barabasi_albert_graph(100,1)   #生成一个BA无标度网络G
    nx.draw(G)                          #绘制网络G
    plt.savefig("ba.png")           #输出方式1: 将图像存为一个png格式的图片文件
    plt.show()                            #输出方式2: 在窗口中显示这幅图像

    参数介绍

    基本

    - `node_size`: 指定节点的尺寸大小(默认是300,单位未知,就是上图中那么大的点)
    - `node_color`: 指定节点的颜色 (默认是红色,可以用字符串简单标识颜色,例如'r'为红色,'b'为绿色等,具体可查看手册)
    - `node_shape`: 节点的形状(默认是圆形,用字符串'o'标识,具体可查看手册)
    - `alpha`: 透明度 (默认是1.0,不透明,0为完全透明)
    - `width`: 边的宽度 (默认为1.0)
    - `edge_color`: 边的颜色(默认为黑色)
    - `style`: 边的样式(默认为实现,可选: solid|dashed|dotted,dashdot)
    - `with_labels`: 节点是否带标签(默认为True)
    - `font_size`: 节点标签字体大小 (默认为12)
    - `font_color`: 节点标签字体颜色(默认为黑色)

    布局

    circular_layout:节点在一个圆环上均匀分布
    random_layout:节点随机分布
    shell_layout:节点在同心圆上分布
    spring_layout: 用Fruchterman-Reingold算法排列节点
    spectral_layout:根据图的拉普拉斯特征向量排列节点

    代码

    # coding:utf-8
    
    
    import networkx as nx 
    import matplotlib.pyplot as plt
    import csv
    
    with open('node-8.csv','rb') as csvfile:
    	reader = csv.DictReader(csvfile)
    	column = [row['b'] for row in reader]
    	id_tag0 = [row['id'] for row in reader]
    #print column
    id_tag = []
    for item in id_tag0:
    	id_tag.append(int(item))
    
    # =================Setting node parameters====================
    node_0 = []
    node_1 = []
    node_2 = []
    node_3 = []
    node_color = []
    node_color_y = []
    node_color_r = []
    node_color_g = []
    node_color_b = []
    node_shape = []
    node_shape_0 = []
    node_shape_1 = []
    node_shape_2 = []
    node_shape_3 = []
    
    for i in range(len(column)):
    	if int(column[i]) == 0:
    		pass
    	elif int(column[i]) == 1:
    		color = 'r'
    		shape = 'o'
    		node_1.append(i)
    		node_color_r.append(color)
    		node_shape_1.append(shape)
    	elif int(column[i]) == 2:
    		color = 'g'
    		shape = 'o'
    		node_2.append(i)
    		node_color_g.append(color)
    		node_shape_2.append(shape)
    	else:
    		color = 'b'
    		shape = '*'
    		node_3.append(i)
    		node_color_b.append(color)
    		node_shape_3.append(shape)
    	node_color.append(color)
    	node_shape.append(shape)
    # ==============================================================
    
    
    with open('node-8.csv','rb') as csvfile:
    	reader = csv.DictReader(csvfile)
    	column1 = [row['b'] for row in reader]
    	id_tag1 = [row['id'] for row in reader]
    #print column
    id_tag11 = []
    for item in id_tag1:
    	id_tag11.append(int(item))
    
    
    
    edge = []
    with open('edge-8.txt','r') as f:  
    	data = f.readlines()  
    	for line in data:
    		#print line
    		line = tuple(line.replace('\r','').replace('\n','').replace('\t','').split(','))
    		edge.append(line)
    #print edge
    
    # ===============Setting edge parameters=========================
    edge_color = []
    edge_style = []
    
    for item in edge:
    	#print item
    	if int(column1[int(item[0])]) == 0 or int(column1[int(item[1])]) == 0:
    		pass
    	elif int(column1[int(item[0])]) == 1 or int(column1[int(item[1])]) == 1:
    		color = 'r'
    		#style0 = 'dashdot'
    		#color_r_list.append(color)
    	elif int(column1[int(item[0])]) == 2 or int(column1[int(item[1])]) == 2:
    		color = 'g'
    		#style0 = 'dashed'
    		#color_r_list.append(color)
    	else:
    		color = 'b'
    		#style0 = 'dotted'
    		#color_b_list.append(color)
    	edge_color.append(color)
    	#edge_style.append(style0)
    
    
    G = nx.Graph()
    #G.add_nodes_from(id_tag)
    G.add_edges_from(edge)
    
    #nx.draw(G,pos=nx.random_layout(G), nodelist = node_0, node_color = node_color_y, node_size=120, node_shape=node_shape_0)
    #nx.draw(G,pos=nx.random_layout(G), nodelist = node_1, node_color = node_color_r, node_size=120, node_shape=node_shape_1)
    #nx.draw(G,pos=nx.random_layout(G), nodelist = node_2, node_color = node_color_g, node_size=120, node_shape=node_shape_2)
    #nx.draw(G,pos=nx.random_layout(G), nodelist = node_3, node_color = node_color_b, node_size=120, node_shape=node_shape_3)
    
    nx.draw_networkx(G,pos=nx.random_layout(G),node_color=node_color,node_size=10,node_shape='o',edge_color=edge_color,width=0.3,style='solid',font_size=8) 
    #nx.draw_networkx(G,pos=nx.random_layout(G),nodelist = node_1,node_color=node_color,node_size=100,node_shape='o',style='dashdot') 
    #nx.draw_networkx(G,pos=nx.random_layout(G),node_color=color_g_list,node_size=150,node_shape='^',style='dashed') 
    #nx.draw_networkx(G,pos=nx.random_layout(G),node_color=color_b_list,node_size=150,node_shape='*',style='dotted') 
    
    #plt.legend()
    #nx.draw_networkx(G)
    plt.show()
    

    画图


    参考链接

    展开全文
  • Echarts开发人物关系网络图

    万次阅读 热门讨论 2018-08-20 18:52:29
    人物关系可视化是将人与人之之间通过某属性进行连接而形成的关系网络,通过可视化技术展现出来。而baidu的Echarts是一款非常敏捷,迅速,酷炫的js可视化工具 1.Echarts介绍 ECharts,一个纯 Javascript 的图表库,...

    转载地址: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();
    }

    可视化结果图如下:

    这里写图片描述

    展开全文
  • 人物关系网络图可视化

    千次阅读 2017-06-26 22:41:00
    1、 https://www.zhihu.com/question/38777475    d3js或是什么vizster (http://www.cnblogs.com/bigdataZJ/p/gephiSourceCodeImport.html) gephi Gephi - The Open Graph Viz Platform    2、Xmind 3、...
  • 用python绘制知乎粉丝关系网络图

    千次阅读 2018-08-24 11:17:09
    将知乎数据爬取下来存放到json文件中
  • 老师给了一份代谢数据,但是没有给网络关系文件,并且是第一次用cytoscape,记录一下流程: 1:数据缩略,其中绿色和红色是老师根据foldchange调的颜色,黄色是因为“;”前后两个代谢物在pubchem中ID一致并且 p值...
  • 关系网络图(igraph)-1

    千次阅读 2016-03-26 16:08:49
    这里的path()里面的节点关系为:依次有向关系, 4.注意以下三种用法 graph “foo” + make_empty_graph() graph “foo” + “bar” + make_empty_graph() graph “foo” + ( “bar” + make_empty_graph() ...
  • 【R 可视化】R 画关系网络图

    万次阅读 2017-06-13 10:01:25
    rm(list=ls()) library(igraph) #1.用igraph创建图表 g(c(1,2, 1,8,1,9,1,10,2,4,2,5,2,6,2,3,3,7,3,11,3,12,3,1), directed=T)com = walktrap.community(g, steps = 6) V(g)$sg = com$membership + 1 V(g)$color
  • 例子1: library(plyr)set.seed(10) rm(list=ls()) library(igraph) g(n=10,p.or.m=1/3,directed=TRUE) com = walktrap.community(g, steps = 6) V(g)$sg = com$membership + 1 V(g)$color = rainbow
  • 网络关系图

    千次阅读 2018-12-23 19:42:54
    g &lt;- graph(c(2,1,3,1,4,1,5,1,6,1,7,1),directed = F) par(mfrow=c(2,3)) ...简单网络布局") plot(g,vertex.size=40,layout=layout.auto,main="自动布局") plot(g,vertex....
  • echarts3生成关系网络关系力向

    万次阅读 多人点赞 2016-10-28 12:14:17
    echarts3生成关系网络关系力向 力引导布局是模拟弹簧电荷模型在每两个节点之间添加一个斥力,每条边的两个节点之间添加一个引力,每次迭代节点会在各个斥力和引力的作用下移动位置,多次迭代后节点会静止在一个受...
  • 项目进度网络图 用来展示项目各个计划活动,持续时间,逻辑关系的图形 分类 1.单代号网络图(节点型) 用一个节点代表一项活动,箭线仅表示活动之间的逻辑关系。 工作在节点上。 2.双代号网络图(箭线型) 用一个...
  • 网络协议关系拓扑 很全面 很好

    千次阅读 2012-02-22 17:42:19
    NETWORK ASSOCIATES GUIDE TO COMMUNICATIONS PROTOCOLS 网络协议关系拓扑 很全面 很好 值得收藏!
  • gephi+echarts实现可视化的网络关系图

    千次阅读 2019-04-08 15:52:18
    gephi+echarts实现可视化的网络关系图 最近工作中需要展示客户合作关系图。感觉是一个比较有意思的事情,就花了些时间研究了一下。 原始数据:是一个xlsx文件,保存着客户的合作关系,每一行记录表示一次合作,合作...
  • 本次实验任务就是要在Hadoop 系统上实现Twitter 社交网络图的三角形计数任务。有向图转化为无向图如下图所示,社交网络中的关注关系一般为有向图,这里需要转化为无向图。转化思路为:如果IF (A->B)
  • 干货!利用Python绘制精美网络关系图

    千次阅读 多人点赞 2021-01-26 17:38:14
    点击上方蓝字关注我们 最近发现一个特别好用的python库,能够绘制精美的关系图,俗话说有好东西要学会分享,所以袁厨就肝了这篇文章,大家可以参考一下。一、概述 Networ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 719,131
精华内容 287,652
关键字:

关系网络图