zoukankan      html  css  js  c++  java
  • 『Networkx』常用方法

    这是一个用于分析'图'结构的包,由于我只是用到了浅显的可视化功能,所以这个介绍会对其使用浅尝辄止。

     解决matplotlib中文字体缺失问题,

    from pylab import mpl
    
    mpl.rcParams['font.sans-serif'] = ['FangSong']    # 指定默认字体
    mpl.rcParams['axes.unicode_minus'] = False        # 解决保存图像是负号'-'显示为方块的问题

    读入数据,

    import pandas as pd
    import networkx as nx
    
    data = pd.read_csv(u'C:Projectspython3_5Gephi\17级学硕导师情况.csv')

    由于图的edge输入格式是(节点1,节点2)的形式,所以我们需要整理一下数据格式,

    edges = [edge for edge in zip(data[data.columns[0]],data['Unnamed: 2'])]
    edges.extend([edge for edge in zip(data[data.columns[0]],data['Unnamed: 3'])])
    edges.extend([edge for edge in zip(data[data.columns[5]],data['Unnamed: 7'])])
    edges.extend([edge for edge in zip(data[data.columns[5]],data['Unnamed: 8'])])
    edges = pd.DataFrame(edges,columns=['导师','学生']).dropna(how='any')

    画图,这里面采取的是为Graph对象添加edge的形式,也可添加node等等,

    实际的体会是异常自由,节点本事没有类型限制,也就是说你可以把数字、字符、其他格式的对象乃至另一个Graph赋为一个节点,当然这在可视化时意义不大,但是networkx包最大功用其实是图分析而非可视化(实际上可视化是一个辅助功能),我了解不多,也只能帮着拍拍手叫叫好了(逃~~

    G = nx.Graph()
    G.add_edges_from([edge for edge in zip(edges['导师'],edges['学生'])])
    
    nx.draw(G,
            # pos = nx.random_layout(G),
            # pos = nx.spring_layout(G),
            # pos = nx.shell_layout(G),
            pos = nx.circular_layout(G),
            node_color = 'r',
            # edge_color = 'b',
            with_labels = True,
            font_size =20,
            node_size =1000,
            alpha=0.3)
    

      

    由于涉及隐私,这里的图我把标签取消了,不过实际效果也就这样,差不太多。

  • 相关阅读:
    查找表类算法//字母异位词分组
    查找表类算法//四数相加 II
    查找表类算法//四数相加 II
    第六章 类文件结构
    第六章 类文件结构
    查找表的算法//四数之和
    查找表的算法//四数之和
    第五章 调优案例分析与实战
    第五章 调优案例分析与实战
    C++_基础4-分支语句和逻辑运算符
  • 原文地址:https://www.cnblogs.com/hellcat/p/7593940.html
Copyright © 2011-2022 走看看