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

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

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

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

1. 隨機(jī)圖生成

最經(jīng)典的隨機(jī)圖當(dāng)屬我們?cè)谏弦黄┛?a href="http://www.fzitv.net/article/247983.htm" rel="external nofollow" target="_blank">《Erdos-Renyi隨機(jī)圖的生成方式及其特性》中講到的Erd?s-Rény隨機(jī)圖了,我們這里選用其中的Gnp??np形式,調(diào)用以下API:

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

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

當(dāng)然,此時(shí)生成的圖不具有權(quán)重,我們想在此基礎(chǔ)上均勻隨機(jī)初始化[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布局可視化

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

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

然后就可以分別繪制圖的邊、節(jié)點(diǎn)和節(jié)點(diǎn)標(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()

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

3. 3D布局可視化

如果你覺得2D布局過于扁平,還不夠直觀地體現(xiàn)節(jié)點(diǎn)之間的拓?fù)潢P(guān)系,那你可以采用如下的代碼對(duì)圖進(jì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()

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

參考

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

相關(guān)文章

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

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

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

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

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

    基于Python計(jì)算圓周率pi代碼實(shí)例

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

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

    最近因?yàn)楣ぷ餍枰枰幚韴D片,一種是頭像的方形圖片處理成圓行的,一種是方形圖片的4角變得橢圓點(diǎn)
    2014-04-04
  • matplotlib設(shè)置坐標(biāo)軸標(biāo)簽和間距的實(shí)現(xiàn)

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

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

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

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

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

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

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

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

    python移位運(yùn)算的實(shí)現(xiàn)

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

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

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

最新評(píng)論

灵台县| 南陵县| 阿克陶县| 刚察县| 昌乐县| 庆云县| 通江县| 株洲县| 紫金县| 鄂伦春自治旗| 高州市| 商城县| 松潘县| 杨浦区| 波密县| 平南县| 浮梁县| 定陶县| 柳河县| 金塔县| 东城区| 溧阳市| 瑞昌市| 安徽省| 宜阳县| 莒南县| 琼海市| 侯马市| 徐闻县| 吉安市| 仁布县| 邵阳市| 河南省| 航空| 建湖县| 富锦市| 枣强县| 怀集县| 博白县| 呼玛县| 邵东县|