networkx筆記:繪製基本網路圖
繪製基本網路圖
用matplotlib繪製網路圖
基本流程:
1. 匯入networkx,matplotlib包
2. 建立網路
3. 繪製網路 nx.draw()
4. 建立佈局 pos = nx.spring_layout美化作用
最基本畫圖程式
import import networkx as nx #匯入networkx包
import matplotlib.pyplot as plt
G = nx.random_graphs.barabasi_albert_graph(100,1) #生成一個BA無標度網路G
nx.draw(G) #繪製網路G
plt.savefig("ba.png") #輸出方式1: 將影象存為一個png格式的圖片檔案
plt.show() #輸出方式2: 在視窗中顯示這幅影象
networkx 提供畫圖的函式有:
draw
(G,[pos,ax,hold])draw_networkx
(G,[pos,with_labels])draw_networkx_nodes
(G,pos,[nodelist]) 繪製網路G的節點圖draw_networkx_edges
(G,pos[edgelist]) 繪製網路G的邊圖draw_networkx_edge_labels
---有layout 佈局畫圖函式的分界線---draw_circular(G, **kwargs)
Draw the graph G with a circular layout.draw_random(G, **kwargs)
Draw the graph G with a random layout.draw_spectral(G, **kwargs)
Draw the graph G with a spectral layout.draw_spring(G, **kwargs)
Draw the graph G with a spring layout.draw_shell(G, **kwargs)
Draw networkx graph with shell layout.draw_graphviz(G[, prog])
Draw networkx graph with graphviz layout.
networkx 畫圖引數:
- node_size
: 指定節點的尺寸大小(預設是300,單位未知,就是上圖中那麼大的點)
- node_color
: 指定節點的顏色 (預設是紅色,可以用字串簡單標識顏色,例如'r'為紅色,'b'為綠色等,具體可檢視手冊),用“資料字典”賦值的時候必須對字典取值(.values())後再賦值
- 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
: 節點標籤字型顏色(預設為黑色)
e.g. nx.draw(G,node_size = 30, with_label = False)
繪製節點的尺寸為30,不帶標籤的網路圖。
佈局指定節點排列形式
pos = nx.spring_layout
建立佈局,對圖進行佈局美化,networkx 提供的佈局方式有:
- circular_layout:節點在一個圓環上均勻分佈
- random_layout:節點隨機分佈
- shell_layout:節點在同心圓上分佈
- spring_layout: 用Fruchterman-Reingold演算法排列節點(這個演算法我不瞭解,樣子類似多中心放射狀)
- spectral_layout:根據圖的拉普拉斯特徵向量排列節
佈局也可用pos引數指定,例如,nx.draw(G, pos = spring_layout(G)) 這樣指定了networkx上以中心放射狀分佈.
繪製劃分後的社群
先看一段程式碼,程式碼源自site
partition = community.best_partition(User)
size = float(len(set(partition.values())))
pos = nx.spring_layout(G)
count = 0.
for com in set(partition.values()) :
count = count + 1.
list_nodes = [nodes for nodes in partition.keys()
if partition[nodes] == com]
nx.draw_networkx_nodes(G, pos, list_nodes, node_size = 50,
node_color = str(count / size))
nx.draw_networkx_edges(User,pos,with_labels = True, alpha=0.5 )
plt.show()
communit.best_partition 是社區劃分方法,演算法是根據Vincent D.Blondel 等人於2008提出,是基於modularity optimization的heuristic方法.
partition的結果存在字典資料型別:{'1': 0, '3': 1, '2': 0, '5': 1, '4': 0, '6': 0}
單引號裡的資料是key,也就是網路中節點編號。
冒號後面的數值,表示網路中節點的編號屬於哪個社群。也就是社群標號。如'6': 0
表示6節點屬於0社群
list_nodes = [nodes for nodes in partition.keys()
if partition[nodes] == com]
每次迴圈list_nodes結果是社群i對應的使用者編號。
如第一次迴圈結果是com = 0, list_nodes= ['1','2','4','6']
第二次迴圈的結果是com = 1, list_nodes = ['3','6']
這樣每次迴圈,畫出一個社群的所有節點:
nx.draw_networkx_nodes(G, pos, list_nodes, node_size = 50,
node_color = str(count / size))
迴圈結束後通過顏色來標識不同社群
http://segmentfault.com/a/1190000000527216
相關推薦
networkx筆記:繪製基本網路圖
繪製基本網路圖 用matplotlib繪製網路圖 基本流程: 1. 匯入networkx,matplotlib包 2. 建立網路 3. 繪製網路 nx.draw() 4. 建立佈局 pos = nx.spring_layout美化作用 最基本畫圖程式 import im
用Python的networkx繪製精美網路圖
最近因為數學建模3天速成Python,然後做了一道網路的題,要畫網路圖。在網上找了一些,發現都是一些很基礎的醜陋紅點圖,並且關於網路的一些演算法也沒有講,於是自己進http://networkx.github.io/學習了一下。以下僅博主自己的總結,勿認真,有錯
筆記:git基本操作
基本概念 位置 bar 回退 let 管理 文件夾 私有 推送 原文: http://www.cnblogs.com/pingwen/p/8098035.html 1. 快速入門的基本概念 相比SVN,TFS等集中式的版本管理系統,GIT分布式管理最重要的理
pytorch筆記:05)UNet網路簡單實現
語義分割的相關介紹可參考該部落格: https://blog.csdn.net/u012931582/article/details/70314859 程式碼參考圖1設計,黑色加粗的標註是筆者新增的,和程式碼中的變數對應 圖1 Unet
pytorch筆記:04)resnet網路&解決輸入影象大小問題
因為torchvision對resnet18-resnet152進行了封裝實現,因而想跟蹤下原始碼(^▽^) 首先看張核心的resnet層次結構圖(圖1),它詮釋了resnet18-152是如何搭建的,其中resnet18和resnet34結構類似,而resnet50-resnet1
Spark學習筆記:DStream基本工作原理
DStream基本工作原理 DStream是Spark Streaming提供的一種高階抽象,英文全稱為Discretized Stream,中文翻譯為離散流,它代表了一個持續不斷的資料流。DStream可以通過輸入資料來源(比如從Flume、Kafka中)來建立,也可以通
筆記:《Python網路爬蟲》
引自:《手把手教你寫網路爬蟲》 頁面資料提取 簡單的text文字提取 通過 F12, Ctrl+Shift+C 快捷鍵從網頁中直接抓取資料 程式碼如下: from urllib.request import urlopen from bs4 import Beautifu
個人筆記:linux基本操作-進階操作
系統版本:centos6.7 檢視IP:ifconfig 軟體資訊:java -version 安裝記錄:yum list installed |grep java 安裝rpm檔案:rpm -ivh 建立檔案:mkdir +目錄 移除:yum -y remove **
storm筆記:storm基本概念
本文主要介紹storm中的基本概念,從基礎上了解strom的體系結構,便於後續程式設計過程中作為基礎指導。主要的概念包括: topology(拓撲) stream(資料流) spout(水龍頭、資料來源) bolt(螺栓,資料篩選處理) stream g
用Graphviz繪製好看網路圖
label換行直接用\n即可位置使用labelloc=b表示放在底部和節點的距離可以用HTML label來實現 Phone[shape=none, label=< <BR/> <BR/> <BR/> <BR/> <
使用Pycaffe繪製Caffe網路圖
檢驗Caffe能否在Python中使用,我們可以在Python中試著import caffe。 import caffe 如果成功的話就可以直接跳到文末看畫圖就好了,失敗的話往往會顯示: ImportError: No module named _
音訊特徵(3):繪製語譜圖
之前小程介紹過怎麼繪製音訊的波形圖(指振幅圖),振幅是聲音的一個特徵,反應了聲音能量的大小。頻率,是聲音的另一個特徵,反應了聲音音調的高低。對頻率的直觀描述或分析,需要使用到語譜圖等手段。 本文介紹如何通過python的pyplot來繪製音訊的語譜圖, 正如使用pyplot來繪製波形圖一樣。 語譜圖,也就是語
【TensorFlow學習筆記】5:variable_scope和name_scope,圖的基本操作
學習《深度學習之TensorFlow》時的一些實踐。 variable_scope 一般的巢狀 上節有學到在巢狀scope中的變數,一般是: import tensorflow as tf # with tf.variable_scope("scopeA") as
《大話數據結構》筆記(7-3)--圖:圖的遍歷
結構 圖的遍歷 -- 前序遍歷 pan 鄰接矩陣 時間 earch img 第七章 圖 圖的遍歷 從圖中某一個頂點出發訪遍圖中其余頂點,且使每一個頂點僅被訪問一次,這一過程就叫做圖的遍歷(Traversing Graph)。 深度優先遍歷(Depth Fir
學習筆記:矩陣的基本運算的實現
for int size data stdin mat 轉置 span font 2017-09-05 21:33:33 writer:pprp 昨天開始就上課了,沒有整天整天的時間去編代碼了,充分抓住每天晚上的時間吧, 今天下午預習了一下線性代數中矩陣最基本的運算,今晚就
Python學習筆記_零零一:Python基本介紹
交易 社交 數據 lips engine 探討 認識 hive 初學者 Python介紹 Python 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。Python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他
學習筆記:python3,一些基本語句(2017)
val from 列表 除法 方法 是否 主程 return tuple 數學運算 1、整除、取模 a = 36 b = 10 c = d = 0 c = a//b #取整除 - 返回商的整數部分 d = a % b #取模 - 返回
Oracle-4 - :超級適合初學者的入門級筆記:plsql,基本語法,記錄類型,循環,遊標,異常處理,存儲過程,存儲函數,觸發器
個人 就會 逗號 n) 循環結構 less 寫上 所有 targe 初學者可以從查詢到現在的pl/sql的內容都可以在我這裏的筆記中找到,希望能幫到大家,視頻資源在 資源, 我自己的全套筆記在 筆記 在pl/sql中可以繼續使用的sql關鍵字有:update delet
HTML學習筆記:基本結構
oot sid html htm body nav 無序 獨立 ade <head>:頭部 <body>:主體 <title>:標題 <h1>:分級標題 <hgroup>:分級標題分組 <header>
Scala筆記整理(一):scala基本知識
大數據 Scala [TOC] Scala簡介 Scala是一門多範式(multi-paradigm)的編程語言,設計初衷是要集成面向對象編程和函數式編程的各種特性。 Scala運行在Java虛擬機上,並兼容現有的Java程序。 Scala源代碼被編譯成Java字節碼,所以它可以運行於JVM之上,並