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)
    

      

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

  • 相关阅读:
    POJ3094 UVALive3594 HDU2734 ZOJ2812 Quicksum【进制】
    UVALive5583 UVA562 Dividing coins
    POJ1979 HDU1312 Red and Black【DFS】
    POJ1979 HDU1312 Red and Black【DFS】
    POJ2386 Lake Counting【DFS】
    POJ2386 Lake Counting【DFS】
    HDU4394 Digital Square
    HDU4394 Digital Square
    UVA213 UVALive5152 Message Decoding
    UVA213 UVALive5152 Message Decoding
  • 原文地址:https://www.cnblogs.com/hellcat/p/7593940.html
Copyright © 2011-2022 走看看