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)
    

      

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

  • 相关阅读:
    PAT A1094 The Largest Generation (25 分)——树的bfs遍历
    PAT A1055 The World's Richest (25 分)——排序
    PAT A1052 Linked List Sorting (25 分)——链表,排序
    PAT A1076 Forwards on Weibo (30 分)——图的bfs
    辅导员
    辅导员面试
    C程序设计
    Excel VBA 基本概念
    Excel函数
    导入excel表的数据到数据库ssh
  • 原文地址:https://www.cnblogs.com/hellcat/p/7593940.html
Copyright © 2011-2022 走看看