欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python?NetworkX庫生成并繪制帶權(quán)無向圖

 更新時間:2022年05月13日 14:58:55   作者:orion-orion  
這篇文章主要為大家介紹了python?NetworkX庫生成并繪制帶權(quán)無向圖的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

NetworkX是一個非常強大的網(wǎng)絡(luò)科學(xué)工具,它封裝了圖的數(shù)據(jù)結(jié)構(gòu)和許多經(jīng)典圖算法,也內(nèi)置了許多可視化函數(shù)可供調(diào)用。

1. 隨機圖生成

最經(jīng)典的隨機圖當(dāng)屬我們在上一篇博客《Erdos-Renyi隨機圖的生成方式及其特性》中講到的Erd?s-Rény隨機圖了,我們這里選用其中的Gnp??np形式,調(diào)用以下API:

G = nx.erdos_renyi_graph(10, 0.3, seed=1)

這里表示生成10個頂點的圖,且圖的每條邊都以0.3的概率產(chǎn)生。

當(dāng)然,此時生成的圖不具有權(quán)重,我們想在此基礎(chǔ)上均勻隨機初始化[0, 0.4]之間的權(quán)重,可以這樣寫:

G = nx.Graph()
for u, v in nx.erdos_renyi_graph(10, 0.3, seed=1).edges():
    G.add_edge(u, v, weight=random.uniform(0, 0.4))

2. 2D布局可視化

隨機圖生成好之后,我們就要對其進行可視化了。首先我們需要計算每個節(jié)點在圖中擺放的位置,經(jīng)典的Fruchterman-Reingold force-directed 算法可以完成這個操作,對應(yīng)NetworkX中的spring_layout函數(shù):

pos = nx.spring_layout(G, iterations=20) #我們設(shè)算法迭代次數(shù)為20次

然后就可以分別繪制圖的邊、節(jié)點和節(jié)點標(biāo)簽了:

nx.draw_networkx_edges(G, pos, edge_color="orange")
nx.draw_networkx_nodes(G, pos, node_color="black")
nx.draw_networkx_labels(G, pos, font_color="white")
plt.show()

繪圖結(jié)果如下:

當(dāng)然,這樣圖的權(quán)值是無法體現(xiàn)于圖上的,如果我們需要圖的權(quán)值體現(xiàn)于圖上,可以使圖中邊的寬度按照權(quán)值大小來設(shè)置:

nx.draw_networkx_edges(G,pos, width=[float(d['weight']*10) for (u,v,d) in G.edges(data=True)], edge_color="orange")
nx.draw_networkx_nodes(G,pos, node_color="black")
nx.draw_networkx_labels(G, pos, font_color="white")
plt.show()

此時的繪圖結(jié)果如下:

3. 3D布局可視化

如果你覺得2D布局過于扁平,還不夠直觀地體現(xiàn)節(jié)點之間的拓?fù)潢P(guān)系,那你可以采用如下的代碼對圖進行三維可視化:

# 3d spring layout
pos = nx.spring_layout(G, dim=3, seed=779)
# Extract node and edge positions from the layout
node_xyz = np.array([pos[v] for v in sorted(G)])
edge_xyz = np.array([(pos[u], pos[v]) for u, v in G.edges()])
# Create the 3D figure
fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
# Plot the nodes - alpha is scaled by "depth" automatically
ax.scatter(*node_xyz.T, s=100, ec="w")
# Plot the edges
for vizedge in edge_xyz:
    ax.plot(*vizedge.T, color="tab:gray")
def _format_axes(ax):
    """Visualization options for the 3D axes."""
    # Turn gridlines off
    ax.grid(False)
    # Suppress tick labels
    for dim in (ax.xaxis, ax.yaxis, ax.zaxis):
        dim.set_ticks([])
    # Set axes labels
    ax.set_xlabel("x")
    ax.set_ylabel("y")
    ax.set_zlabel("z")
_format_axes(ax)
fig.tight_layout()
plt.show()

此時的繪圖結(jié)果如下:

參考

以上就是python NetworkX庫生成并繪制帶權(quán)無向圖的詳細內(nèi)容,更多關(guān)于NetworkX庫繪制帶權(quán)無向圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • node.js獲取參數(shù)的常用方法(總結(jié))

    node.js獲取參數(shù)的常用方法(總結(jié))

    下面小編就為大家?guī)硪黄猲ode.js獲取參數(shù)的常用方法(總結(jié))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 使用Django+Vue編寫一個文件上傳器

    使用Django+Vue編寫一個文件上傳器

    本教程中,我將會使用Django和Vue創(chuàng)建一個支持多文件上傳的文件上傳器,您可以在單個文件和多個文件上傳之間選擇在應(yīng)用中進行上傳操作,文章通過代碼示例截殺的非常詳細,需要的朋友可以參考下
    2023-11-11
  • python在linux中輸出帶顏色的文字的方法

    python在linux中輸出帶顏色的文字的方法

    這篇文章主要介紹了python在linux中輸出帶顏色的文字的方法,僅在Linux系統(tǒng)中有效果,一般輸出在控制臺中,本文用在日志環(huán)節(jié),方便測試,需要的朋友可以參考下
    2014-06-06
  • Python接口自動化之淺析requests模塊get請求

    Python接口自動化之淺析requests模塊get請求

    這篇文章主要介紹了requests模塊get請求,在Python語言中,雖然提供了urllib2和urllib的庫,但是相比較而言,Requests仍然是實現(xiàn)接口測試最好的選擇,因為它是用起來更加簡便
    2021-08-08
  • Python自動錄入ERP系統(tǒng)數(shù)據(jù)

    Python自動錄入ERP系統(tǒng)數(shù)據(jù)

    這篇文章主要介紹了Python如何自動錄入ERP系統(tǒng)數(shù)據(jù),用Python解決Excel問題的最佳方法,文章中有詳細的代碼示例,需要的朋友可以參考閱讀
    2023-04-04
  • Python-flask調(diào)用接口返回中文數(shù)據(jù)問題

    Python-flask調(diào)用接口返回中文數(shù)據(jù)問題

    這篇文章主要介紹了Python-flask調(diào)用接口返回中文數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • python如何求數(shù)組連續(xù)最大和的示例代碼

    python如何求數(shù)組連續(xù)最大和的示例代碼

    這篇文章主要介紹了python如何求數(shù)組連續(xù)最大和的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • scrapy頭部修改的方法詳解

    scrapy頭部修改的方法詳解

    這篇文章主要給大家介紹了關(guān)于scrapy頭部修改的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python time模塊詳解(常用函數(shù)實例講解,非常好)

    Python time模塊詳解(常用函數(shù)實例講解,非常好)

    在平常的代碼中,我們常常需要與時間打交道。在Python中,與時間處理有關(guān)的模塊就包括:time,datetime以及calendar。這篇文章,主要講解time模塊。
    2014-04-04
  • Python中pymysql 模塊的使用詳解

    Python中pymysql 模塊的使用詳解

    pymsql是Python中操作MySQL的模塊,其使用方法和MySQLdb幾乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。
    2019-08-08

最新評論