最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)無向圖的詳細(xì)內(nèi)容,更多關(guān)于NetworkX庫繪制帶權(quán)無向圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python爬蟲實現(xiàn)中英翻譯詞典

    python爬蟲實現(xiàn)中英翻譯詞典

    這篇文章主要為大家詳細(xì)介紹了python爬蟲實現(xiàn)中英翻譯詞典,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • 聊聊prod()與cumprod()區(qū)別cumsum()

    聊聊prod()與cumprod()區(qū)別cumsum()

    這篇文章主要介紹了prod()與cumprod()區(qū)別cumsum(),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 基于Python計算圓周率pi代碼實例

    基于Python計算圓周率pi代碼實例

    這篇文章主要介紹了基于Python計算圓周率pi代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • python處理圓角圖片、圓形圖片的例子

    python處理圓角圖片、圓形圖片的例子

    最近因為工作需要,需要處理圖片,一種是頭像的方形圖片處理成圓行的,一種是方形圖片的4角變得橢圓點
    2014-04-04
  • matplotlib設(shè)置坐標(biāo)軸標(biāo)簽和間距的實現(xiàn)

    matplotlib設(shè)置坐標(biāo)軸標(biāo)簽和間距的實現(xiàn)

    本文主要介紹了matplotlib設(shè)置坐標(biāo)軸標(biāo)簽和間距的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 解決import tensorflow導(dǎo)致jupyter內(nèi)核死亡的問題

    解決import tensorflow導(dǎo)致jupyter內(nèi)核死亡的問題

    這篇文章主要介紹了解決import tensorflow導(dǎo)致jupyter內(nèi)核死亡的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Python實現(xiàn)圖像添加水印的方法

    Python實現(xiàn)圖像添加水印的方法

    在日常圖像處理中,為圖片添加水印是一項常見任務(wù),本文主要介紹了Python實現(xiàn)圖像添加水印的方法,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • python接口自動化測試數(shù)據(jù)和代碼分離解析

    python接口自動化測試數(shù)據(jù)和代碼分離解析

    代碼的可維護性除了代碼冗余之外還有就是數(shù)據(jù)盡量不要和代碼摻雜在一起,因為閱讀起來會非常的凌亂;數(shù)據(jù)分離能更好的增加代碼可讀性和可維護性,也能更好的二次修改使用
    2021-09-09
  • python移位運算的實現(xiàn)

    python移位運算的實現(xiàn)

    這篇文章主要介紹了python移位運算的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • OpenCV每日函數(shù)之BarcodeDetector類條碼檢測器

    OpenCV每日函數(shù)之BarcodeDetector類條碼檢測器

    OpenCV在V4.5.3版本的contrib包中提供了一個barcode::BarcodeDetector類,用于條形碼的識別,這篇文章主要介紹了OpenCV每日函數(shù)?BarcodeDetector條碼檢測器,需要的朋友可以參考下
    2022-06-06

最新評論

武夷山市| 康平县| 安义县| 铜鼓县| 隆尧县| 即墨市| 邵阳县| 吐鲁番市| 佛山市| 邵东县| 金华市| 饶河县| 海伦市| 玉环县| 余姚市| 哈密市| 山阳县| 尼勒克县| 高尔夫| 山阴县| 盘山县| 神木县| 普定县| 枝江市| 屏边| 贺兰县| 德钦县| 仪陇县| 文成县| 波密县| 安义县| 安平县| 南昌市| 竹北市| 龙门县| 富锦市| 阆中市| 二手房| 吴川市| 南木林县| 高邑县|