日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python复杂网络分析库networkx

發布時間:2023/12/16 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python复杂网络分析库networkx 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

      • 1 簡介
        • 安裝
        • 支持四種圖
        • 繪制網絡圖基本流程
      • 2 Graph-無向圖
        • 節點
        • 屬性
        • 有向圖和無向圖互轉
      • 3 DiGraph-有向圖
      • 一些精美的圖例子
        • 環形樹狀圖
        • 權重圖
        • Giant Component
        • Random Geometric Graph 隨機幾何圖
        • 節點顏色漸變
        • 邊的顏色漸變
        • Atlas
        • 畫個五角星
        • Club
        • 畫一個多層感知機
        • 繪制一個DNN結構圖
      • 一些圖論算法
        • 最短路徑
      • 問題
      • 一些其他神經網絡繪制工具列表
      • 參考

1 簡介

networkx是一個用Python語言開發的圖論與復雜網絡建模工具,內置了常用的圖與復雜網絡分析算法,可以方便的進行復雜網絡數據分析、仿真建模等工作。
利用networkx可以以標準化和非標準化的數據格式存儲網絡、生成多種隨機網絡和經典網絡、分析網絡結構、建立網絡模型、設計新的網絡算法、進行網絡繪制等。
networkx支持創建簡單無向圖、有向圖和多重圖(multigraph);內置許多標準的圖論算法,節點可為任意數據;支持任意的邊值維度,功能豐富,簡單易用。
networkx以圖(graph)為基本數據結構。圖既可以由程序生成,也可以來自在線數據源,還可以從文件與數據庫中讀取。

安裝

安裝的話,跟其他包的安裝差不多,用的是anaconda就不用裝了。其他就用pip install networkx。

查看版本:

>>> import networkx >>> networkx.__version__ '1.11'

升級

pip install --upgrade networkx

下面配合使用的一些庫,可以選擇性安裝:
后面可能用到pygraphviz,安裝方法如下(親測有效):

sudo apt-get install graphviz sudo apt-get install graphviz libgraphviz-dev pkg-config sudo apt-get install python-pip python-virtualenv pip install pygraphviz

windows的安裝參考這篇博客:
https://blog.csdn.net/fadai1993/article/details/82491657#2____linux_9

安裝cv2:

pip install opencv-python #安裝非常慢,用下面的方式,從清華源下載 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

支持四種圖

  • Graph:無多重邊無向圖
  • DiGraph:無多重邊有向圖
  • MultiGraph:有多重邊無向圖
  • MultiDiGraph:有多重邊有向圖

空圖對象的創建方式

import networkx as nx G=nx.Graph() G=nx.DiGraph() G=nx.MultiGraph() G=nx.MultiDiGraph() G.clear() #清空圖

繪制網絡圖基本流程

  • 導入networkx,matplotlib包
  • 建立網絡
  • 繪制網絡 nx.draw()
  • 建立布局 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(G, pos[, …]) 繪制網絡G的邊圖,邊有label
    —有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 畫圖函數里的一些參數

  • pos(dictionary, optional): 圖像的布局,可選擇參數;如果是字典元素,則節點是關鍵字,位置是對應的值。如果沒有指明,則會是spring的布局;也可以使用其他類型的布局,具體可以查閱networkx.layout
  • arrows :布爾值,默認True; 對于有向圖,如果是True則會畫出箭頭
  • with_labels: 節點是否帶標簽(默認為True)
  • ax:坐標設置,可選擇參數;依照設置好的Matplotlib坐標畫圖
  • nodelist:一個列表,默認G.nodes(); 給定節點
  • edgelist:一個列表,默認G.edges();給定邊
  • node_size: 指定節點的尺寸大小(默認是300,單位未知,就是上圖中那么大的點)
  • node_color: 指定節點的顏色 (默認是紅色,可以用字符串簡單標識顏色,例如’r’為紅色,'b’為綠色等,具體可查看手冊),用“數據字典”賦值的時候必須對字典取值(.values())后再賦值
  • node_shape: 節點的形狀(默認是圓形,用字符串’o’標識,具體可查看手冊)
  • alpha: 透明度 (默認是1.0,不透明,0為完全透明)
  • cmap:Matplotlib的顏色映射,默認None; 用來表示節點對應的強度
  • vmin,vmax:浮點數,默認None;節點顏色映射尺度的最大和最小值
  • linewidths:[None|標量|一列值];圖像邊界的線寬
  • width: 邊的寬度 (默認為1.0)
  • edge_color: 邊的顏色(默認為黑色)
  • edge_cmap:Matplotlib的顏色映射,默認None; 用來表示邊對應的強度
  • edge_vmin,edge_vmax:浮點數,默認None;邊的顏色映射尺度的最大和最小值
  • style: 邊的樣式(默認為實現,可選: solid|dashed|dotted,dashdot)
  • labels:字典元素,默認None;文本形式的節點標簽
  • font_size: 節點標簽字體大小 (默認為12)
  • font_color: 節點標簽字體顏色(默認為黑色)
  • node_size:節點大小
  • font_weight:字符串,默認’normal’
  • font_family:字符串,默認’sans-serif’

布局指定節點排列形式

  • circular_layout:節點在一個圓環上均勻分布
  • random_layout:節點隨機分布
  • shell_layout:節點在同心圓上分布
  • spring_layout: 用Fruchterman-Reingold算法排列節點,中心放射狀分布
  • spectral_layout:根據圖的拉普拉斯特征向量排列節點

布局也可用pos參數指定,例如,nx.draw(G, pos = spring_layout(G)) 這樣指定了networkx上以中心放射狀分布.

2 Graph-無向圖

如果添加的節點和邊是已經存在的,是不會報錯的,NetworkX會自動忽略掉已經存在的邊和節點的添加。

節點

常用函數

  • nodes(G):在圖節點上返回一個迭代器
  • number_of_nodes(G):返回圖中節點的數量
  • all_neighbors(graph, node):返回圖中節點的所有鄰居
  • non_neighbors(graph, node):返回圖中沒有鄰居的節點
  • common_neighbors(G, u, v):返回圖中兩個節點的公共鄰居
import networkx as nx import matplotlib.pyplot as pltG = nx.Graph() # 建立一個空的無向圖G#增加節點 G.add_node('a') # 添加一個節點1 G.add_nodes_from(['b', 'c', 'd', 'e']) # 加點集合 G.add_cycle(['f', 'g', 'h', 'j']) # 加環 H = nx.path_graph(10) # 返回由10個節點的無向圖 G.add_nodes_from(H) # 創建一個子圖H加入G G.add_node(H) # 直接將圖作為節點nx.draw(G, with_labels=True,node_color='red') plt.show()#訪問節點 print('圖中所有的節點', G.nodes()) #圖中所有的節點 [0, 1, 2, 3, 'a', 'c', 'f', 7, 8, 9, <networkx.classes.graph.Graph object at 0x7fdf7d0d2780>, 'g', 'e', 'h', 'b', 4, 6, 5, 'j', 'd']print('圖中節點的個數', G.number_of_nodes()) #圖中節點的個數 20#刪除節點 G.remove_node(1) #刪除指定節點 G.remove_nodes_from(['b','c','d','e']) #刪除集合中的節點

常用函數

  • edges(G[, nbunch]):返回與nbunch中的節點相關的邊的視圖
  • number_of_edges(G):返回圖中邊的數目
  • non_edges(graph):返回圖中不存在的邊
import networkx as nx import matplotlib.pyplot as plt#添加邊方法1F = nx.Graph() # 創建無向圖 F.add_edge(11,12) #一次添加一條邊#添加邊方法2 e=(13,14) #e是一個元組 F.add_edge(*e) #這是python中解包裹的過程#添加邊方法3 F.add_edges_from([(1,2),(1,3)]) #通過添加list來添加多條邊H = nx.path_graph(10) #返回由10個節點的無向圖 #通過添加任何ebunch來添加邊 F.add_edges_from(H.edges()) #不能寫作F.add_edges_from(H)nx.draw(F, with_labels=True) plt.show()#訪問邊 print('圖中所有的邊', F.edges()) # 圖中所有的邊 [(0, 1), (1, 2), (1, 3), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9), (11, 12), (13, 14)]print('圖中邊的個數', F.number_of_edges()) # 圖中邊的個數 12#刪除邊 F.remove_edge(1,2) F.remove_edges_from([(11,12), (13,14)])nx.draw(F, with_labels=True) plt.show()

使用鄰接迭代器遍歷每一條邊

import networkx as nx import matplotlib.pyplot as plt#快速遍歷每一條邊,可以使用鄰接迭代器實現,對于無向圖,每一條邊相當于兩條有向邊 FG = nx.Graph() FG.add_weighted_edges_from([(1,2,0.125), (1,3,0.75), (2,4,1.2), (3,4,0.275)]) for n, nbrs in FG.adjacency_iter():for nbr, eattr in nbrs.items():data = eattr['weight']print('(%d, %d, %0.3f)' % (n,nbr,data))# (1, 2, 0.125)# (1, 3, 0.750)# (2, 1, 0.125)# (2, 4, 1.200)# (3, 1, 0.750)# (3, 4, 0.275)# (4, 2, 1.200)# (4, 3, 0.275)print('***********************************')#篩選weight小于0.5的邊: FG = nx.Graph() FG.add_weighted_edges_from([(1,2,0.125), (1,3,0.75), (2,4,1.2), (3,4,0.275)]) for n, nbrs in FG.adjacency_iter():for nbr, eattr in nbrs.items():data = eattr['weight']if data < 0.5:print('(%d, %d, %0.3f)' % (n,nbr,data))# (1, 2, 0.125)# (2, 1, 0.125)# (3, 4, 0.275)# (4, 3, 0.275)print('***********************************')#一種方便的訪問所有邊的方法: for u,v,d in FG.edges(data = 'weight'):print((u,v,d))# (1, 2, 0.125)# (1, 3, 0.75)# (2, 4, 1.2)# (3, 4, 0.275)

屬性

  • 屬性諸如weight,labels,colors,或者任何對象,都可以附加到圖、節點或邊上。
  • 對于每一個圖、節點和邊都可以在關聯的屬性字典中保存一個(多個)鍵-值對。
  • 默認情況下這些是一個空的字典,但是可以增加或者是改變這些屬性。

圖的屬性

#圖的屬性import networkx as nxG = nx.Graph(day='Monday') #可以在創建圖時分配圖的屬性 print(G.graph)G.graph['day'] = 'Friday' #也可以修改已有的屬性 print(G.graph)G.graph['name'] = 'time' #可以隨時添加新的屬性到圖中 print(G.graph)輸出: {'day': 'Monday'} {'day': 'Friday'} {'day': 'Friday', 'name': 'time'}

節點的屬性

#節點的屬性 import networkx as nxG = nx.Graph(day='Monday') G.add_node(1, index='1th') #在添加節點時分配節點屬性 # print(G.node(data=True)) #TypeError: 'dict' object is not callable print(G.node) #{1: {'index': '1th'}}G.node[1]['index'] = '0th' #通過G.node[][]來添加或修改屬性 print(G.node) # {1: {'index': '0th'}}G.add_nodes_from([2,3], index='2/3th') #從集合中添加節點時分配屬性 print(G.node) # {1: {'index': '0th'}, 2: {'index': '2/3th'}, 3: {'index': '2/3th'}}

邊的屬性

#邊的屬性 import networkx as nxG = nx.Graph(day='manday') G.add_edge(1,2,weight=10) #在添加邊時分配屬性 print(G.edges(data=True)) #[(1, 2, {'weight': 10})]G.add_edges_from([(1,3), (4,5)], len=22) #從集合中添加邊時分配屬性 print(G.edges(data='len')) # [(1, 2, None), (1, 3, 22), (4, 5, 22)]G.add_edges_from([(3,4,{'hight':10}),(1,4,{'high':'unknow'})]) print(G.edges(data=True)) # [(1, 2, {'weight': 10}), (1, 3, {'len': 22}), (1, 4, {'high': 'unknow'}), (3, 4, {'hight': 10}), (4, 5, {'len': 22})]G[1][2]['weight'] = 100000 #通過G[][][]來添加或修改屬性 print(G.edges(data=True)) # [(1, 2, {'weight': 100000}), (1, 3, {'len': 22}), (1, 4, {'high': 'unknow'}), (3, 4, {'hight': 10}), (4, 5, {'len': 22})]

有向圖和無向圖互轉

有向圖和多重圖的基本操作與無向圖一致。
無向圖與有向圖之間可以相互轉換,轉化方法如下:

#有向圖轉化成無向圖H=DG.to_undirected() #或者 H=nx.Graph(DG)#無向圖轉化成有向圖F = H.to_directed() #或者 F = nx.DiGraph(H)

3 DiGraph-有向圖

import networkx as nx import matplotlib.pyplot as pltG = nx.DiGraph() G.add_node(1) G.add_node(2) G.add_nodes_from([3,4,5,6]) G.add_cycle([1,2,3,4]) G.add_edge(1,3) G.add_edges_from([(3,5),(3,6),(6,7)]) nx.draw(G,node_color = 'red') plt.savefig("youxiangtu.png") plt.show() from __future__ import division import matplotlib.pyplot as plt import networkx as nxG = nx.generators.directed.random_k_out_graph(10, 3, 0.5) pos = nx.layout.spring_layout(G)node_sizes = [3 + 10 * i for i in range(len(G))] M = G.number_of_edges() edge_colors = range(2, M + 2) edge_alphas = [(5 + i) / (M + 4) for i in range(M)]nodes = nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color='blue') edges = nx.draw_networkx_edges(G, pos, node_size=node_sizes, arrowstyle='->',arrowsize=10, edge_color=edge_colors,edge_cmap=plt.cm.Blues, width=2) # set alpha value for each edge for i in range(M):edges[i].set_alpha(edge_alphas[i])ax = plt.gca() ax.set_axis_off() plt.savefig("directed.jpg") plt.show()

一些精美的圖例子

環形樹狀圖

import matplotlib.pyplot as plt import networkx as nxtry:import pygraphvizfrom networkx.drawing.nx_agraph import graphviz_layout except ImportError:try:import pydotfrom networkx.drawing.nx_pydot import graphviz_layoutexcept ImportError:raise ImportError("This example needs Graphviz and either ""PyGraphviz or pydot")G = nx.balanced_tree(3, 5) pos = graphviz_layout(G, prog='twopi', args='') plt.figure(figsize=(8, 8)) nx.draw(G, pos, node_size=20, alpha=0.5, node_color="blue", with_labels=False) plt.axis('equal') plt.show()

權重圖

import matplotlib.pyplot as plt import networkx as nxG = nx.Graph()G.add_edge('a', 'b', weight=0.6) G.add_edge('a', 'c', weight=0.2) G.add_edge('c', 'd', weight=0.1) G.add_edge('c', 'e', weight=0.7) G.add_edge('c', 'f', weight=0.9) G.add_edge('a', 'd', weight=0.3)elarge = [(u, v) for (u, v, d) in G.edges(data=True) if d['weight'] > 0.5] esmall = [(u, v) for (u, v, d) in G.edges(data=True) if d['weight'] <= 0.5]pos = nx.spring_layout(G) # positions for all nodes# nodes nx.draw_networkx_nodes(G, pos, node_size=700)# edges nx.draw_networkx_edges(G, pos, edgelist=elarge,width=6) nx.draw_networkx_edges(G, pos, edgelist=esmall,width=6, alpha=0.5, edge_color='b', style='dashed')# labels nx.draw_networkx_labels(G, pos, font_size=20, font_family='sans-serif')plt.axis('off') plt.savefig("weight.jpg") plt.show()

Giant Component

import mathimport matplotlib.pyplot as plt import networkx as nxtry:import pygraphvizfrom networkx.drawing.nx_agraph import graphviz_layoutlayout = graphviz_layout except ImportError:try:import pydotfrom networkx.drawing.nx_pydot import graphviz_layoutlayout = graphviz_layoutexcept ImportError:print("PyGraphviz and pydot not found;\n""drawing with spring layout;\n""will be slow.")layout = nx.spring_layoutn = 150 # 150 nodes # p value at which giant component (of size log(n) nodes) is expected p_giant = 1.0 / (n - 1) # p value at which graph is expected to become completely connected p_conn = math.log(n) / float(n)# the following range of p values should be close to the threshold pvals = [0.003, 0.006, 0.008, 0.015]region = 220 # for pylab 2x2 subplot layout plt.subplots_adjust(left=0, right=1, bottom=0, top=0.95, wspace=0.01, hspace=0.01) for p in pvals:G = nx.binomial_graph(n, p)pos = layout(G)region += 1plt.subplot(region)plt.title("p = %6.3f" % (p))nx.draw(G, pos,with_labels=False,node_size=10)# identify largest connected componentGcc = sorted(nx.connected_component_subgraphs(G), key=len, reverse=True)G0 = Gcc[0]nx.draw_networkx_edges(G0, pos,with_labels=False,edge_color='r',width=6.0)# show other connected componentsfor Gi in Gcc[1:]:if len(Gi) > 1:nx.draw_networkx_edges(Gi, pos,with_labels=False,edge_color='r',alpha=0.3,width=5.0) plt.show()

Random Geometric Graph 隨機幾何圖

import matplotlib.pyplot as plt import networkx as nxG = nx.random_geometric_graph(200, 0.125) # position is stored as node attribute data for random_geometric_graph pos = nx.get_node_attributes(G, 'pos')# find node near center (0.5,0.5) dmin = 1 ncenter = 0 for n in pos:x, y = pos[n]d = (x - 0.5)**2 + (y - 0.5)**2if d < dmin:ncenter = ndmin = d# color by path length from node near center p = dict(nx.single_source_shortest_path_length(G, ncenter))plt.figure(figsize=(8, 8)) nx.draw_networkx_edges(G, pos, nodelist=[ncenter], alpha=0.4) nx.draw_networkx_nodes(G, pos, nodelist=list(p.keys()),node_size=80,node_color=list(p.values()),cmap=plt.cm.Reds_r)plt.xlim(-0.05, 1.05) plt.ylim(-0.05, 1.05) #plt.axis('off') plt.show()

節點顏色漸變

import networkx as nx import matplotlib.pyplot as plt G = nx.cycle_graph(24) pos = nx.spring_layout(G, iterations=200) nx.draw(G, pos, node_color=range(24), node_size=800, cmap=plt.cm.Blues) plt.savefig("node.jpg") plt.show()

邊的顏色漸變

import matplotlib.pyplot as plt import networkx as nxG = nx.star_graph(20) pos = nx.spring_layout(G) #布局為中心放射狀 colors = range(20) nx.draw(G, pos, node_color='#A0CBE2', edge_color=colors,width=4, edge_cmap=plt.cm.Blues, with_labels=False) plt.show()

Atlas

import randomtry:import pygraphvizfrom networkx.drawing.nx_agraph import graphviz_layout except ImportError:try:import pydotfrom networkx.drawing.nx_pydot import graphviz_layoutexcept ImportError:raise ImportError("This example needs Graphviz and either ""PyGraphviz or pydot.")import matplotlib.pyplot as pltimport networkx as nx from networkx.algorithms.isomorphism.isomorph import graph_could_be_isomorphic as isomorphic from networkx.generators.atlas import graph_atlas_gdef atlas6():""" Return the atlas of all connected graphs of 6 nodes or less.Attempt to check for isomorphisms and remove."""Atlas = graph_atlas_g()[0:208] # 208# remove isolated nodes, only connected graphs are leftU = nx.Graph() # graph for union of all graphs in atlasfor G in Atlas:zerodegree = [n for n in G if G.degree(n) == 0]for n in zerodegree:G.remove_node(n)U = nx.disjoint_union(U, G)# iterator of graphs of all connected componentsC = (U.subgraph(c) for c in nx.connected_components(U))UU = nx.Graph()# do quick isomorphic-like check, not a true isomorphism checkernlist = [] # list of nonisomorphic graphsfor G in C:# check against all nonisomorphic graphs so farif not iso(G, nlist):nlist.append(G)UU = nx.disjoint_union(UU, G) # union the nonisomorphic graphsreturn UUdef iso(G1, glist):"""Quick and dirty nonisomorphism checker used to check isomorphisms."""for G2 in glist:if isomorphic(G1, G2):return Truereturn Falseif __name__ == '__main__':G = atlas6()print("graph has %d nodes with %d edges"% (nx.number_of_nodes(G), nx.number_of_edges(G)))print(nx.number_connected_components(G), "connected components")plt.figure(1, figsize=(8, 8))# layout graphs with positions using graphviz neatopos = graphviz_layout(G, prog="neato")# color nodes the same in each connected subgraphC = (G.subgraph(c) for c in nx.connected_components(G))for g in C:c = [random.random()] * nx.number_of_nodes(g) # random color...nx.draw(g,pos,node_size=40,node_color=c,vmin=0.0,vmax=1.0,with_labels=False)plt.show()

畫個五角星

import networkx as nx import matplotlib.pyplot as plt #畫圖! G=nx.Graph() G.add_node(1) G.add_nodes_from([2,3,4,5]) for i in range(5):for j in range(i):if (abs(i-j) not in (1,4)):G.add_edge(i+1, j+1) nx.draw(G,with_labels=True, #這個選項讓節點有名稱edge_color='b', # b stands for blue!pos=nx.circular_layout(G), # 這個是選項選擇點的排列方式,具體可以用 help(nx.drawing.layout) 查看# 主要有spring_layout (default), random_layout, circle_layout, shell_layout# 這里是環形排布,還有隨機排列等其他方式node_color='r', # r = rednode_size=1000, # 節點大小width=3, # 邊的寬度) plt.savefig("star.jpg") plt.show()

Club

import matplotlib.pyplot as plt import networkx as nx import networkx.algorithms.bipartite as bipartiteG = nx.davis_southern_women_graph() women = G.graph['top'] clubs = G.graph['bottom']print("Biadjacency matrix") print(bipartite.biadjacency_matrix(G, women, clubs))# project bipartite graph onto women nodes W = bipartite.projected_graph(G, women) print('') print("#Friends, Member") for w in women:print('%d %s' % (W.degree(w), w))# project bipartite graph onto women nodes keeping number of co-occurence # the degree computed is weighted and counts the total number of shared contacts W = bipartite.weighted_projected_graph(G, women) print('') print("#Friend meetings, Member") for w in women:print('%d %s' % (W.degree(w, weight='weight'), w))nx.draw(G,node_color="red") plt.savefig("club.jpg") plt.show()

畫一個多層感知機

import matplotlib.pyplot as plt import networkx as nx left, right, bottom, top, layer_sizes = .1, .9, .1, .9, [4, 7, 7, 2] # 網絡離上下左右的距離 # layter_sizes可以自己調整 import random G = nx.Graph() v_spacing = (top - bottom)/float(max(layer_sizes)) h_spacing = (right - left)/float(len(layer_sizes) - 1) node_count = 0 for i, v in enumerate(layer_sizes):layer_top = v_spacing*(v-1)/2. + (top + bottom)/2.for j in range(v):G.add_node(node_count, pos=(left + i*h_spacing, layer_top - j*v_spacing))node_count += 1 # 這上面的數字調整我想了好半天,汗 for x, (left_nodes, right_nodes) in enumerate(zip(layer_sizes[:-1], layer_sizes[1:])):for i in range(left_nodes):for j in range(right_nodes):G.add_edge(i+sum(layer_sizes[:x]), j+sum(layer_sizes[:x+1]))pos=nx.get_node_attributes(G,'pos') # 把每個節點中的位置pos信息導出來 nx.draw(G, pos,node_color=range(node_count),with_labels=True,node_size=200,edge_color=[random.random() for i in range(len(G.edges))],width=3,cmap=plt.cm.Dark2, # matplotlib的調色板,可以搜搜,很多顏色edge_cmap=plt.cm.Blues) plt.savefig("mlp.jpg") plt.show()

繪制一個DNN結構圖

# -*- coding:utf-8 -*- import networkx as nx import matplotlib.pyplot as plt# 創建DAG G = nx.DiGraph()# 頂點列表 vertex_list = ['v'+str(i) for i in range(1, 22)] # 添加頂點 G.add_nodes_from(vertex_list)# 邊列表 edge_list = [('v1', 'v5'), ('v1', 'v6'), ('v1', 'v7'),('v1', 'v8'),('v1', 'v9'),('v2', 'v5'), ('v2', 'v6'), ('v2', 'v7'),('v2', 'v8'),('v2', 'v9'),('v3', 'v5'), ('v3', 'v6'), ('v3', 'v7'),('v3', 'v8'),('v3', 'v9'),('v4', 'v5'), ('v4', 'v6'), ('v4', 'v7'),('v4', 'v8'),('v4', 'v9'),('v5','v10'),('v5','v11'),('v5','v12'),('v5','v13'),('v5','v14'),('v5','v15'),('v6','v10'),('v6','v11'),('v6','v12'),('v6','v13'),('v6','v14'),('v6','v15'),('v7','v10'),('v7','v11'),('v7','v12'),('v7','v13'),('v7','v14'),('v7','v15'),('v8','v10'),('v8','v11'),('v8','v12'),('v8','v13'),('v8','v14'),('v8','v15'),('v9','v10'),('v9','v11'),('v9','v12'),('v9','v13'),('v9','v14'),('v9','v15'),('v10','v16'),('v10','v17'),('v10','v18'),('v11','v16'),('v11','v17'),('v11','v18'),('v12','v16'),('v12','v17'),('v12','v18'),('v13','v16'),('v13','v17'),('v13','v18'),('v14','v16'),('v14','v17'),('v14','v18'),('v15','v16'),('v15','v17'),('v15','v18'),('v16','v19'),('v17','v20'),('v18','v21')] # 通過列表形式來添加邊 G.add_edges_from(edge_list)# 繪制DAG圖 plt.title('DNN for iris') #圖片標題nx.draw(G,node_color = 'red', # 頂點顏色edge_color = 'black', # 邊的顏色with_labels = True, # 顯示頂點標簽font_size =10, # 文字大小node_size =300 # 頂點大小) # 顯示圖片 plt.show()

可以看到,在代碼中已經設置好了這22個神經元以及它們之間的連接情況,但繪制出來的結構如卻是這樣的:

這顯然不是想要的結果,因為各神經的連接情況不明朗,而且很多神經都擠在了一起,看不清楚。之所以出現這種情況,是因為沒有給神經元設置坐標,導致每個神經元都是隨機放置的。
接下來,引入坐標機制,即設置好每個神經元節點的坐標,使得它們的位置能夠按照事先設置好的來放置,其Python代碼如下:

# -*- coding:utf-8 -*- import networkx as nx import matplotlib.pyplot as plt# 創建DAG G = nx.DiGraph()# 頂點列表 vertex_list = ['v'+str(i) for i in range(1, 22)] # 添加頂點 G.add_nodes_from(vertex_list)# 邊列表 edge_list = [('v1', 'v5'), ('v1', 'v6'), ('v1', 'v7'),('v1', 'v8'),('v1', 'v9'),('v2', 'v5'), ('v2', 'v6'), ('v2', 'v7'),('v2', 'v8'),('v2', 'v9'),('v3', 'v5'), ('v3', 'v6'), ('v3', 'v7'),('v3', 'v8'),('v3', 'v9'),('v4', 'v5'), ('v4', 'v6'), ('v4', 'v7'),('v4', 'v8'),('v4', 'v9'),('v5','v10'),('v5','v11'),('v5','v12'),('v5','v13'),('v5','v14'),('v5','v15'),('v6','v10'),('v6','v11'),('v6','v12'),('v6','v13'),('v6','v14'),('v6','v15'),('v7','v10'),('v7','v11'),('v7','v12'),('v7','v13'),('v7','v14'),('v7','v15'),('v8','v10'),('v8','v11'),('v8','v12'),('v8','v13'),('v8','v14'),('v8','v15'),('v9','v10'),('v9','v11'),('v9','v12'),('v9','v13'),('v9','v14'),('v9','v15'),('v10','v16'),('v10','v17'),('v10','v18'),('v11','v16'),('v11','v17'),('v11','v18'),('v12','v16'),('v12','v17'),('v12','v18'),('v13','v16'),('v13','v17'),('v13','v18'),('v14','v16'),('v14','v17'),('v14','v18'),('v15','v16'),('v15','v17'),('v15','v18'),('v16','v19'),('v17','v20'),('v18','v21')] # 通過列表形式來添加邊 G.add_edges_from(edge_list)# 指定繪制DAG圖時每個頂點的位置 pos = {'v1':(-2,1.5),'v2':(-2,0.5),'v3':(-2,-0.5),'v4':(-2,-1.5),'v5':(-1,2),'v6': (-1,1),'v7':(-1,0),'v8':(-1,-1),'v9':(-1,-2),'v10':(0,2.5),'v11':(0,1.5),'v12':(0,0.5),'v13':(0,-0.5),'v14':(0,-1.5),'v15':(0,-2.5),'v16':(1,1),'v17':(1,0),'v18':(1,-1),'v19':(2,1),'v20':(2,0),'v21':(2,-1)} # 繪制DAG圖 plt.title('DNN for iris') #圖片標題 plt.xlim(-2.2, 2.2) #設置X軸坐標范圍 plt.ylim(-3, 3) #設置Y軸坐標范圍 nx.draw(G,pos = pos, # 點的位置node_color = 'red', # 頂點顏色edge_color = 'black', # 邊的顏色with_labels = True, # 顯示頂點標簽font_size =10, # 文字大小node_size =300 # 頂點大小) # 顯示圖片 plt.show()

可以看到,在代碼中,通過pos字典已經規定好了每個神經元節點的位置。

接下來,需要對這個框架圖進行更為細致地修改,需要修改的地方為:

  • 去掉神經元節點的標簽;
  • 添加模型層的文字注釋(比如Input layer)

其中,第二步的文字注釋,我們借助opencv來完成。完整的Python代碼如下:

# -*- coding:utf-8 -*- import cv2 import networkx as nx import matplotlib.pyplot as plt# 創建DAG G = nx.DiGraph()# 頂點列表 vertex_list = ['v'+str(i) for i in range(1, 22)] # 添加頂點 G.add_nodes_from(vertex_list)# 邊列表 edge_list = [('v1', 'v5'), ('v1', 'v6'), ('v1', 'v7'),('v1', 'v8'),('v1', 'v9'),('v2', 'v5'), ('v2', 'v6'), ('v2', 'v7'),('v2', 'v8'),('v2', 'v9'),('v3', 'v5'), ('v3', 'v6'), ('v3', 'v7'),('v3', 'v8'),('v3', 'v9'),('v4', 'v5'), ('v4', 'v6'), ('v4', 'v7'),('v4', 'v8'),('v4', 'v9'),('v5','v10'),('v5','v11'),('v5','v12'),('v5','v13'),('v5','v14'),('v5','v15'),('v6','v10'),('v6','v11'),('v6','v12'),('v6','v13'),('v6','v14'),('v6','v15'),('v7','v10'),('v7','v11'),('v7','v12'),('v7','v13'),('v7','v14'),('v7','v15'),('v8','v10'),('v8','v11'),('v8','v12'),('v8','v13'),('v8','v14'),('v8','v15'),('v9','v10'),('v9','v11'),('v9','v12'),('v9','v13'),('v9','v14'),('v9','v15'),('v10','v16'),('v10','v17'),('v10','v18'),('v11','v16'),('v11','v17'),('v11','v18'),('v12','v16'),('v12','v17'),('v12','v18'),('v13','v16'),('v13','v17'),('v13','v18'),('v14','v16'),('v14','v17'),('v14','v18'),('v15','v16'),('v15','v17'),('v15','v18'),('v16','v19'),('v17','v20'),('v18','v21')] # 通過列表形式來添加邊 G.add_edges_from(edge_list)# 指定繪制DAG圖時每個頂點的位置 pos = {'v1':(-2,1.5),'v2':(-2,0.5),'v3':(-2,-0.5),'v4':(-2,-1.5),'v5':(-1,2),'v6': (-1,1),'v7':(-1,0),'v8':(-1,-1),'v9':(-1,-2),'v10':(0,2.5),'v11':(0,1.5),'v12':(0,0.5),'v13':(0,-0.5),'v14':(0,-1.5),'v15':(0,-2.5),'v16':(1,1),'v17':(1,0),'v18':(1,-1),'v19':(2,1),'v20':(2,0),'v21':(2,-1)} # 繪制DAG圖 plt.title('DNN for iris') #圖片標題 plt.xlim(-2.2, 2.2) #設置X軸坐標范圍 plt.ylim(-3, 3) #設置Y軸坐標范圍 nx.draw(G,pos = pos, # 點的位置node_color = 'red', # 頂點顏色edge_color = 'black', # 邊的顏色font_size =10, # 文字大小node_size =300 # 頂點大小)# 保存圖片,圖片大小為640*480 plt.savefig('DNN_sketch.png')# 利用opencv模塊對DNN框架添加文字注釋# 讀取圖片 imagepath = 'DNN_sketch.png' image = cv2.imread(imagepath, 1)# 輸入層 cv2.rectangle(image, (85, 130), (120, 360), (255,0,0), 2) cv2.putText(image, "Input Layer", (15, 390), 1, 1.5, (0, 255, 0), 2, 1)# 隱藏層 cv2.rectangle(image, (190, 70), (360, 420), (255,0,0), 2) cv2.putText(image, "Hidden Layer", (210, 450), 1, 1.5, (0, 255, 0), 2, 1)# 輸出層 cv2.rectangle(image, (420, 150), (460, 330), (255,0,0), 2) cv2.putText(image, "Output Layer", (380, 360), 1, 1.5, (0, 255, 0), 2, 1)# sofrmax層 cv2.rectangle(image, (530, 150), (570, 330), (255,0,0), 2) cv2.putText(image, "Softmax Func", (450, 130), 1, 1.5, (0, 0, 255), 2, 1)# 保存修改后的圖片 cv2.imwrite('DNN.png', image)

一些圖論算法

最短路徑

函數調用:
dijkstra_path(G, source, target, weight=‘weight’) ————求最短路徑
dijkstra_path_length(G, source, target, weight=‘weight’) ————求最短距離

import networkx as nx import pylab import numpy as np #自定義網絡 row=np.array([0,0,0,1,2,3,6]) col=np.array([1,2,3,4,5,6,7]) value=np.array([1,2,1,8,1,3,5])print('生成一個空的有向圖') G=nx.DiGraph() print('為這個網絡添加節點...') for i in range(0,np.size(col)+1):G.add_node(i) print('在網絡中添加帶權中的邊...') for i in range(np.size(row)):G.add_weighted_edges_from([(row[i],col[i],value[i])])print('給網路設置布局...') pos=nx.shell_layout(G) print('畫出網絡圖像:') nx.draw(G,pos,with_labels=True, node_color='white', edge_color='red', node_size=400, alpha=0.5 ) pylab.title('Self_Define Net',fontsize=15) pylab.show()''' Shortest Path with dijkstra_path ''' print('dijkstra方法尋找最短路徑:') path=nx.dijkstra_path(G, source=0, target=7) print('節點0到7的路徑:', path) print('dijkstra方法尋找最短距離:') distance=nx.dijkstra_path_length(G, source=0, target=7) print('節點0到7的距離為:', distance)

輸出:

生成一個空的有向圖 為這個網絡添加節點... 在網絡中添加帶權中的邊... 給網路設置布局... 畫出網絡圖像: dijkstra方法尋找最短路徑: 節點0到7的路徑: [0, 3, 6, 7] dijkstra方法尋找最短距離: 節點0到7的距離為: 9

問題

本人在pycharm中運行下列程序:

import networkx as nx import matplotlib.pyplot as pltG = nx.Graph() # 建立一個空的無向圖G G.add_node('a') # 添加一個節點1 G.add_nodes_from(['b', 'c', 'd', 'e']) # 加點集合 G.add_cycle(['f', 'g', 'h', 'j']) # 加環 H = nx.path_graph(10) # 返回由10個節點挨個連接的無向圖,所以有9條邊 G.add_nodes_from(H) # 創建一個子圖H加入G G.add_node(H) # 直接將圖作為節點nx.draw(G, with_labels=True) plt.show()

發現在Pycharm下使用matploylib庫繪制3D圖的時候,在最后需要顯示圖像的時候,每當輸入plt.show() 都會報錯

plt.show() /yyl/Python/3.6/lib/python/site-packages/matplotlib/figure.py:1743: UserWarning: This figure includes Axes that are not compatible with tight_layout, so its results might be incorrect. warnings.warn("This figure includes Axes that are not " ... ValueError: max() arg is an empty sequence

網上的解決方案:
File -> Setting -> Tools -> Python Scientific中去掉對Show plots in tool window的勾選就好了

一些其他神經網絡繪制工具列表

名稱描述推薦指數
Python+Graphvizgraphviz的python版本(親測)****
PlotNeuralNet第一步生成tex文件,然后調用LaTeX命令行生成圖形(親測)****
NetworkX這是個專門的復雜網絡圖的Python包****
Matplotlib’s Viznet利用Matplotlib的Viznet****
LaTeX tikz繪制網絡結點圖的tikz庫***
Graphviz專業繪圖軟件,dot描述語言***
Inkscape屬于繪圖軟件***
Omnigraffle由The Omni Group制作的一款繪圖軟件***
netron支持ONNX (.onnx, .pb, .pbtxt), Keras (.h5, .keras), CoreML (.mlmodel), Caffe2 (predict_net.pb, predict_net.pbtxt), MXNet (.model, -symbol.json) and TensorFlow Lite (.tflite),在前面鏈接處下載文件,在這里演示***
TensorBoard配合Tensorflow一起使用的***
Keras自帶plot方法,例子,也需要安裝graphviz,pydot等***
Netscope for Caffe只支持Caffe格式,例子***
draw_convnet這個其實是利用Matplotlib的繪圖功能寫了一個Python腳本**
dnngraph僅使用于Caffe框架**
ConvNetDraw靈活性差,沒有更新了**

上面都是一些這個網絡庫使用的一點總結,更多內容可以參考下面的官方鏈接。

參考

  • 官方教程:https://networkx.github.io/documentation/stable/_downloads/networkx_reference.pdf
  • 官方網站:https://networkx.github.io/documentation/latest/index.html
  • 官方githu博客:http://networkx.github.io/
  • 用Python的networkx繪制精美網絡圖
  • networkx整理
  • Networkx使用指南
  • 論文中繪制神經網絡工具匯總
  • networkx + Cytoscape 構建及可視化網絡圖
  • 用python+graphviz/networkx畫目錄結構樹狀圖

總結

以上是生活随笔為你收集整理的python复杂网络分析库networkx的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

99r在线| 国产精品xxxx18a99 | 国产成人精品三级 | 精品国产综合区久久久久久 | 在线小视频国产 | 欧美日韩高清一区二区 国产亚洲免费看 | 国产精品久久影院 | 在线观看视频你懂的 | 五月婷婷av | 九九99靖品| 久久伊人操 | 亚洲h色精品 | 韩国在线一区二区 | 一区二区在线电影 | 日韩视频 一区 | 草草草影院| 国产精品久久久久久久久久新婚 | 奇米网网址 | 黄色高清视频在线观看 | 一区二区欧美日韩 | 欧美午夜精品久久久久 | av福利在线导航 | 国产夫妻性生活自拍 | 在线精品视频免费观看 | 欧美日韩精品久久久 | 四虎海外影库www4hu | 久久黄色小说 | 久久在线免费观看视频 | 日韩av男人的天堂 | 韩国精品在线观看 | 夜夜骑首页 | 久久人人97超碰国产公开结果 | 激情网站 | 国产精品久久久久久久久久久免费看 | 综合色爱| 亚洲国产中文字幕在线观看 | 免费91麻豆精品国产自产在线观看 | 99精品免费在线 | 国产成人精品久 | 亚洲最大成人网4388xx | 欧美日韩中 | 美女国产在线 | 亚洲三级精品 | 久插视频| 成人小电影在线看 | 国产精品观看在线亚洲人成网 | 国产精品国产自产拍高清av | 久久99热久久99精品 | 国产九色在线播放九色 | 久久久久久久久久久久亚洲 | 色综合久久久久久中文网 | 在线观看电影av | 五月天网站在线 | 久草在线视频免赞 | 欧美成人精品欧美一级乱黄 | 天天天天天天干 | 亚洲91在线| 天天碰天天操 | 免费看十八岁美女 | 97人人艹 | 免费a级毛片在线看 | 夜夜躁日日躁狠狠久久av | 成人av片免费看 | 亚洲精品自在在线观看 | av中文资源在线 | 天天操天天艹 | 欧美成人在线免费 | 国产精品6| 国产在线精品一区二区 | 99热国产在线中文 | 人人插人人插 | 欧美日韩国产高清视频 | 狠狠插狠狠干 | 久久99国产精品 | 免费看的视频 | 成人黄色小视频 | 日本巨乳在线 | 成人黄视频 | 欧美在一区 | 91在线亚洲| 97人人模人人爽人人喊网 | 在线观看亚洲精品 | 久色网| 国产一区二区久久久 | 欧美九九九 | 日韩免费一区二区在线观看 | 999电影免费在线观看2020 | 国产精品久久久久国产精品日日 | 四季av综合网站 | 免费观看www7722午夜电影 | 午夜精品久久久久久久99婷婷 | 91久久偷偷做嫩草影院 | 中文av资源站 | 亚洲免费公开视频 | www.五月天婷婷.com | 97视频免费观看 | 在线成人国产 | 激情大尺度视频 | 午夜影视一区 | 久久午夜电影院 | 国内成人精品2018免费看 | 18做爰免费视频网站 | 全久久久久久久久久久电影 | 日韩a级免费视频 | va视频在线观看 | 久久黄色免费视频 | 国产视频精品免费 | 99久久999久久久精玫瑰 | 黄色一级大片在线观看 | av先锋中文字幕 | 亚洲精品九九 | 国产特黄色片 | 久久久久久久99 | 久久午夜网 | 国产精品久久久久久久午夜片 | 中文字幕在线视频一区二区三区 | a级国产乱理伦片在线观看 亚洲3级 | 4438全国亚洲精品在线观看视频 | 美女免费视频网站 | 国产三级精品三级在线观看 | 97精品国产91久久久久久 | 免费在线一区二区 | 久久99热这里只有精品国产 | 在线91av | 麻豆传媒在线视频 | 久久视频一区 | 色网免费观看 | 成人欧美亚洲 | 色午夜影院 | 午夜精品一区二区三区视频免费看 | 五月婷丁香 | 久久综合九色99 | 日韩在线电影 | 日韩免费电影在线观看 | 久久久鲁 | 黄色毛片在线观看 | 日韩av不卡播放 | 夜夜骑日日操 | 成人少妇影院yyyy | 成人三级网址 | 91亚洲夫妻 | 国产精品mm | 日韩av高清在线观看 | 在线网站黄 | 国产激情电影综合在线看 | 色999五月色| 久草在线最新视频 | 香蕉97视频观看在线观看 | www.色国产 | 久久精品99国产精品亚洲最刺激 | 不卡的一区二区三区 | 久久短视频 | 特级黄录像视频 | 在线亚洲人成电影网站色www | 一区二区三区高清 | 午夜精品久久久久99热app | 成人中文字幕av | 色婷婷激情四射 | 久久精品中文字幕少妇 | 日韩啪啪小视频 | 果冻av在线 | 一区二区视频在线观看免费 | 日韩久久久| 99视频国产在线 | 亚洲高清资源 | 亚洲精品黄 | 日韩精品免费一区二区三区 | 91免费看片黄 | 日韩精品一区二区三区中文字幕 | 欧美日韩亚洲第一 | 久久精品www人人爽人人 | 久久精品久久久久久久 | 最新成人在线 | 精品美女久久久久 | 日韩精品免费一线在线观看 | 黄污网| 亚洲精品美女久久17c | 伊人官网 | 在线观看国产一区 | 国产视频一区在线 | 一区二区三区日韩视频在线观看 | 国产在线播放不卡 | 99在线视频网站 | 亚洲午夜久久久久久久久久久 | 国产乱对白刺激视频在线观看女王 | 91传媒免费观看 | 四虎永久精品在线 | 91精品视频免费看 | 在线免费国产视频 | 亚洲综合在线发布 | 在线播放 日韩专区 | 国产精品亚洲精品 | 97在线播放视频 | 热久久国产精品 | 国产精品麻| 天天操天天操天天操天天操 | av在线之家电影网站 | 人人干狠狠干 | 99在线热播精品免费99热 | 在线观看中文字幕av | 日韩高清av在线 | 在线免费中文字幕 | 久草精品视频在线播放 | 亚洲视频 视频在线 | 日本精品一二区 | 99综合视频 | 69热国产视频 | 992tv人人网tv亚洲精品 | 色偷偷97| 天天射天天爽 | 精品久久一区二区 | 国产黑丝一区二区 | 91视频 - 114av | 狠狠干综合 | 最近日本韩国中文字幕 | av播放在线 | 日本性生活一级片 | 久久久久免费精品国产小说色大师 | 日韩黄色软件 | 国产精品a成v人在线播放 | 欧美一二三区在线观看 | 成人在线黄色 | av.com在线| 久久a免费视频 | 午夜三级大片 | 丁香视频五月 | 久草久草久草久草 | 91视频传媒 | 正在播放国产91 | 婷婷在线免费观看 | 亚洲欧美日韩国产 | 成人网中文字幕 | 手机在线看a | 久久久久五月 | 91成人午夜 | 香蕉视频久久久 | 国产色a在线观看 | 欧美91精品久久久久国产性生爱 | 国产资源在线视频 | 精品美女久久久久久免费 | 久久免费国产电影 | 国产操在线 | 午夜精品视频免费在线观看 | 色综合激情网 | 亚洲成人精品国产 | 欧美国产不卡 | 成人黄色小视频 | 在线91精品 | 人操人| 在线视频观看91 | 2019中文字幕网站 | a级国产乱理论片在线观看 伊人宗合网 | 免费a现在观看 | 天天干国产| 国产精品专区在线 | 日本久久久亚洲精品 | 中文av资源站 | 成年人免费观看国产 | 国产精品永久免费 | 日韩精品免费一区二区 | 国产欧美日韩视频 | 久久久国产毛片 | 99在线热播 | 高清日韩一区二区 | www.久艹 | 欧美aⅴ在线观看 | 免费中文字幕视频 | 一区二区影视 | 欧美极品一区二区三区 | 欧美一区二区精品在线 | 在线播放精品一区二区三区 | 天天插天天干天天操 | 国产精品久久毛片 | 一本色道久久综合亚洲二区三区 | 色.www | 欧美激情综合色综合啪啪五月 | 97超在线视频 | 久草在线手机观看 | 国产精品毛片久久蜜 | 91最新视频在线观看 | 97色狠狠 | 国产精品乱码一区二三区 | 91精品国产成人www | 国产福利精品一区二区 | 激情黄色一级片 | 99视频播放 | 久久免费激情视频 | 波多野结衣久久精品 | www.com久久久| 五月天婷亚洲天综合网精品偷 | 少妇bbbb揉bbbb日本 | 在线黄频 | 在线视频免费观看 | 中文字幕在线观看第二页 | 四虎国产精品免费观看视频优播 | 国产精品久久久av久久久 | 午夜少妇一区二区三区 | 亚洲成人av一区 | 亚洲精品视频网站在线观看 | 国产小视频精品 | 色婷婷色 | 91九色综合| 欧美精品免费在线 | 欧美日一级片 | 欧美小视频在线观看 | 午夜精品99久久免费 | 色丁香综合 | 午夜美女av | 中文字幕一区二区在线观看 | 五月开心婷婷 | 香蕉视频网址 | 欧美精品在线观看 | 黄色日批网站 | 中文字幕高清免费日韩视频在线 | 免费在线激情电影 | av高清网站在线观看 | 精品久久精品久久 | 日韩久久网站 | 国产人成一区二区三区影院 | 激情网在线观看 | 久久综合加勒比 | 久久久人人爽 | 国产精品热视频 | 91丨九色丨勾搭 | 色婷五月天 | 国产成人精品久久亚洲高清不卡 | 国语精品免费视频 | 超碰免费观看 | av在线免费播放 | 波多野结衣在线播放一区 | 国产区高清在线 | av资源在线观看 | 日韩欧美国产激情在线播放 | 最新av电影网址 | 狠狠色丁香婷婷综合久久片 | 久久久久久久影视 | 色婷av| 干干干操操操 | 91久久奴性调教 | 日韩av资源在线观看 | 国产高清视频免费在线观看 | 欧美激情综合色综合啪啪五月 | av片无限看| 亚洲国产精品视频在线观看 | 97热在线观看 | 精品在线播放 | 色婷婷狠狠五月综合天色拍 | 91精品国产入口 | 一本—道久久a久久精品蜜桃 | 久久免费福利 | 久章操| 国产精品123 | 天天综合狠狠精品 | 久久精品免费 | 国产成人精品在线播放 | 97超碰在| 国产高清视频 | 91精品久久久久 | 91精品一区二区三区蜜桃 | 国产精品理论片在线播放 | 日日干夜夜骑 | 久久成电影 | 最近中文字幕高清字幕免费mv | 午夜影院一级 | av观看久久久 | 97视频在线免费播放 | 久久黄视频 | 偷拍区另类综合在线 | 国产精品免费一区二区三区在线观看 | 在线 高清 中文字幕 | 日韩av在线网站 | 国产免费亚洲 | 日韩中文字幕免费看 | 一区二区高清在线 | 一级片免费视频 | 天天骚夜夜操 | 麻豆传媒视频观看 | 国产精品麻豆一区二区三区 | 婷婷天天色 | 五月天婷婷在线视频 | av免费在线网 | 国产理论免费 | 国产成人精品一区二区三区网站观看 | 又黄又爽又无遮挡的视频 | 区一区二在线 | 国产精品久久久久久久99 | 一级c片| 九九免费在线观看视频 | 人人插人人搞 | 最新国产精品久久精品 | 欧美精品网站 | 国产无套精品久久久久久 | 成人黄色电影免费观看 | 国产精品女人网站 | 亚洲精品九九 | 久草在线久草在线2 | 亚洲欧洲视频 | 麻豆一二三精选视频 | 日韩精品免费在线 | 欧美中文字幕久久 | 欧美激情精品久久久久久免费 | 久久 一区 | 91大神精品视频在线观看 | 激情五月婷婷综合网 | 日韩超碰在线 | 久久国产麻豆 | 成人一级片视频 | 青青河边草免费观看 | 国产生活一级片 | 99视频在线免费播放 | 豆豆色资源网xfplay | 伊人久久婷婷 | 在线观看久 | 人人狠狠| 免费成人av电影 | 99操视频| 国产精品电影一区 | 国产精品第一视频 | 国产精品第52页 | 国产欧美最新羞羞视频在线观看 | 亚州av一区 | 精品国产人成亚洲区 | 狠狠插狠狠干 | 日韩精品久久中文字幕 | 国产精品一区二区在线观看 | 欧美日韩国产精品一区二区 | 色婷婷www | 亚洲天堂精品视频 | 久久日韩精品 | 色综合久久久 | 午夜精品电影 | av大片免费看 | 91视频这里只有精品 | 九九99视频| 人人射av| 人人干网 | 欧美一区二区伦理片 | 亚洲黄色免费在线 | 欧美a级片免费看 | 色网站免费在线观看 | 久久综合久久久 | 91精品国产91久久久久 | 九九热在线精品视频 | 日韩欧美99 | 中文字幕日韩精品有码视频 | 天天插综合 | 日韩精品久久一区二区三区 | 日韩免费视频一区二区 | 免费韩国av | 狠狠操操| 久久99婷婷 | 九月婷婷综合网 | 色多多污污 | 美女黄网站视频免费 | 亚洲精品国偷自产在线99热 | 嫩草av影院 | 欧美在线观看视频一区二区三区 | 特级毛片网站 | 日女人免费视频 | 在线播放一区二区三区 | av在线影片 | 日本精a在线观看 | 六月色婷 | 中文字幕在线日 | 中文字幕的 | 免费看的黄网站软件 | 精品久久久久久久久久久久久久久久久久 | 婷婷亚洲综合五月天小说 | 日韩精品一区二区免费视频 | 97综合网 | 国产手机视频在线 | 天天色天天综合网 | 国产成人精品午夜在线播放 | 免费看片亚洲 | 成年人免费在线观看网站 | 久久久久久亚洲精品 | 久久天天操 | 一区二区欧美日韩 | 在线看福利av | 四虎在线观看 | 亚州中文av | 欧美一级大片在线观看 | 成人在线中文字幕 | 五月天激情视频在线观看 | 久久久久久久久久久免费视频 | 国产一区麻豆 | 中文字幕网站 | 国产一区二区在线播放 | 日本xxxx.com | 亚洲精品视频在线观看免费 | 中文欧美字幕免费 | 欧美日韩免费观看一区=区三区 | 日韩电影在线观看中文字幕 | 中文字幕av日韩 | 一级片视频在线 | 成年人黄色大片在线 | 久久九九网站 | 亚洲日日日 | 国产视频在线播放 | 人人干人人艹 | 亚洲黄色在线观看 | 亚洲成人精品影院 | 黄色av电影在线 | 夜夜干夜夜 | 国产激情久久久 | 丁香婷婷在线观看 | 天天操人 | 国产成人精品电影久久久 | 欧美精品久久久久久久久久 | 欧美日韩国产一区二区在线观看 | 四虎成人精品在永久免费 | 视频国产在线 | 六月婷婷久香在线视频 | 99久久www免费 | 亚洲 欧美 综合 在线 精品 | 在线有码中文 | 手机av在线不卡 | 日本久久精品视频 | 国产成人免费观看 | 久久精品国产一区二区电影 | 麻豆视频www | 91亚色视频| 日韩福利在线观看 | 91在线观看高清 | 中文字幕乱码电影 | 亚洲视频每日更新 | 国产视频 亚洲精品 | 丁香激情网 | 色丁香综合 | 国产精品3| 国产精品99久久久久人中文网介绍 | 久久成人国产精品入口 | 精品影院 | 99精品免费视频 | 色偷偷88欧美精品久久久 | 亚洲九九九在线观看 | www.久久爱.cn | 97**国产露脸精品国产 | 欧美日韩国产综合一区二区 | 日韩丝袜视频 | 四虎国产免费 | 天天做日日爱夜夜爽 | 亚洲午夜久久久久久久久久久 | 久久久麻豆 | 国产成人l区 | 日韩欧美综合在线视频 | 日韩激情片在线观看 | 狠狠干天天射 | 国产精品免费不卡 | 国产高清在线观看av | 在线观av | 国产精品亚洲成人 | 欧美色图亚洲图片 | 99视频在线免费播放 | 国产福利精品一区二区 | 久久只精品99品免费久23小说 | 中文字幕有码在线观看 | 奇米网8888 | 久久人人添人人爽添人人88v | 国产理论片在线观看 | 成全在线视频免费观看 | 中文字幕乱偷在线 | 国产成人精品亚洲a | 久久影视中文字幕 | 丝袜精品视频 | 国产中文在线字幕 | 三级黄色三级 | 黄色三级免费网址 | 蜜臀久久99静品久久久久久 | 国产 一区二区三区 在线 | 亚洲在线精品视频 | 中文字幕一区二区三区在线播放 | 国产一区在线免费 | 国产日韩欧美视频 | 欧美精品一区二区蜜臀亚洲 | 视频在线99 | 中文字幕在线播放av | 啪啪激情网 | 欧美日韩国产免费视频 | 久久精品中文字幕一区二区三区 | 中文字幕在线观看视频网站 | 国产综合片 | 97精品视频在线 | 欧美日韩一级在线 | 玖玖在线观看视频 | 中文字幕在线不卡国产视频 | av在线看片 | 热久久这里只有精品 | 五月婷在线视频 | 日韩激情网 | 中文字幕欧美三区 | 视频成人永久免费视频 | 美女视频a美女大全免费下载蜜臀 | 午夜的福利 | 激情五月开心 | 亚洲最新av在线网址 | 九九热国产视频 | 国产在线理论片 | 九九日九九操 | 日韩欧美v | 欧美日韩国产一二 | 日韩丝袜在线观看 | 人人澡澡人人 | 国产精品久久久久久久av电影 | 婷婷五情天综123 | www.亚洲视频| 中文字幕精品三区 | 六月丁香六月婷婷 | 国产青春久久久国产毛片 | 激情开心站 | 欧美天堂视频在线 | 欧美乱码精品一区二区 | 精品少妇一区二区三区在线 | 国产一区二区在线播放 | 在线观看岛国 | 日韩理论影院 | www.天天综合| 欧美一进一出抽搐大尺度视频 | 中国一级片免费看 | 日韩毛片久久久 | 日韩精品一区二区三区三炮视频 | 丁香九月婷婷 | 日韩欧美综合在线视频 | 美女视频久久久 | 国产91aaa | 国产成人精品一区二区三区在线 | 天天天天综合 | 在线视频日韩精品 | 国产黄色片免费 | 国产精品一区在线播放 | 韩国中文三级 | 在线黄色国产 | 91 在线视频播放 | 久久,天天综合 | 成人免费毛片aaaaaa片 | 黄av资源| 狠狠操狠狠干天天操 | 亚洲精品在线观看av | 国产亚洲成av人片在线观看桃 | 日本一区二区不卡高清 | 人人干天天干 | 久久久精品免费看 | 最近日本中文字幕a | 最新国产视频 | 久久99亚洲网美利坚合众国 | 国产我不卡 | 成人综合免费 | 日韩精品资源 | 久久99久久久久久 | 久久噜噜少妇网站 | 亚洲欧美在线综合 | 91精品1区| 亚洲妇女av | 久久久久久久久黄色 | 成人精品一区二区三区电影免费 | 97人人爽 | 91热视频在线观看 | 国产精品久久久久久久久久新婚 | 91在线91拍拍在线91 | www视频在线免费观看 | 高清av影院| 在线观看黄污 | 久久精品久久久久电影 | 亚洲精品自拍 | 欧美精品中文字幕亚洲专区 | 91热视频在线观看 | 国产精品久久免费看 | 久久久久在线观看 | 精品久久久久久久久久国产 | 中文字幕在线一二 | 久久另类小说 | 欧美 高跟鞋交 xxxxhd | 国产国语在线 | 久久视频网址 | 黄色大片网 | 国产男女爽爽爽免费视频 | 亚洲精品在线免费 | 黄网站大全 | 亚洲精品免费在线 | 国产不卡精品 | japanese黑人亚洲人4k | 久久久在线免费观看 | 视频在线观看一区 | 国产精品国产自产拍高清av | 国产精品二区在线 | 色狠狠操 | 天天躁日日躁狠狠躁av麻豆 | 在线亚洲免费视频 | 精品1区2区 | 黄色在线观看免费网站 | 欧美中文字幕久久 | 国产精品2018 | 91看片麻豆 | 深夜免费网站 | 久久久久免费精品视频 | 色综合狠狠干 | 91传媒免费观看 | 91视频高清 | 日韩欧美一区二区三区视频 | 九精品 | 少妇bbr搡bbb搡bbb | 曰韩在线 | 99在线高清视频在线播放 | 69国产在线观看 | 久草视频在线播放 | 国产女v资源在线观看 | 热久久在线视频 | 日韩最新av在线 | 91字幕 | 成人a视频 | 久久免费视频1 | 欧美a级免费视频 | 91丨九色丨国产女 | 九九免费在线视频 | 成人在线视频在线观看 | 综合网伊人 | 国产一区二区三区 在线 | 午夜123 | 99久在线精品99re8热视频 | 狠狠狠狠狠狠干 | 91麻豆精品国产91久久久久久久久 | 91亚洲精品久久久 | www.天天操.com | 国产精品久久久久久久久费观看 | 国产日产亚洲精华av | 国产视频精选在线 | 国产剧情一区二区在线观看 | 久久久91精品国产一区二区精品 | 天天拍天天色 | 正在播放亚洲精品 | 久久夜色精品国产欧美乱 | 久久国产二区 | 久久久久久久av | 国产原创在线视频 | 久久成| 这里只有精品视频在线观看 | 黄色不卡av | 怡红院av| 综合在线观看色 | 日日草av | 国产亚洲欧美在线视频 | 一级黄色视屏 | 日韩久久电影 | 国产欧美精品在线观看 | 免费日韩 精品中文字幕视频在线 | 久草在线视频在线观看 | 天天做天天爱天天爽综合网 | 国产综合视频在线观看 | 久久成人黄色 | 久久天天躁夜夜躁狠狠躁2022 | 一区二区三区手机在线观看 | 蜜桃av人人夜夜澡人人爽 | 免费看日韩| 天堂av网址 | 国产91区| 中文字幕资源站 | 国产午夜精品一区二区三区欧美 | h视频在线看 | 黄色软件视频网站 | 狠狠的日日 | 天天综合操 | 欧美va在线观看 | 四虎成人在线 | 成人a级免费视频 | 在线视频 精品 | 久久理论影院 | 99精品在线看 | 色www免费视频 | 99在线视频观看 | 中文字幕一区av | 国产精品免费成人 | 人人干人人做 | 久99久精品视频免费观看 | 五月天国产| 在线观看久久久久久 | 伊人影院得得 | 三级黄免费看 | 色网站在线免费观看 | 夜夜夜夜猛噜噜噜噜噜初音未来 | zzijzzij日本成熟少妇 | 一区二区三区四区五区在线 | 中文字幕av专区 | 久久九精品 | 97精品电影院 | 天天鲁天天干天天射 | 麻豆影视在线免费观看 | 最近高清中文字幕在线国语5 | 免费观看v片在线观看 | 日韩av女优视频 | 91国内产香蕉 | 在线观看一 | 国产美女无遮挡永久免费 | 精品久久久亚洲 | 国产又粗又猛又爽又黄的视频先 | 精品国产乱码久久久久久浪潮 | 久久人人爽人人片av | 在线精品亚洲 | 色视频在线免费 | 超碰在线人人 | 国产激情久久久 | www.久久久久 | 玖玖视频国产 | 99热.com| 一区二区影视 | 国内精品久久天天躁人人爽 | 一区二区三区视频 | 亚洲精品乱码久久久久久 | 高清在线一区二区 | 午夜在线观看 | 久草在线视频资源 | 婷婷久月 | 国产精品毛片一区视频播不卡 | 成人免费视频网站 | 五月婷婷狠狠 | 日韩精品无码一区二区三区 | 2019天天干夜夜操 | 激情综合网在线观看 | 日韩电影精品 | 久草视频免费看 | 亚洲精品视频在线观看视频 | 激情网站 | 黄色网址中文字幕 | 在线免费观看视频一区二区三区 | 99c视频高清免费观看 | 婷婷中文字幕在线观看 | 欧美在线视频第一页 | 欧美在线观看视频一区二区 | 欧美一二三四在线 | 日韩电影一区二区三区 | 国产福利在线不卡 | 精品一区久久 | 五月天国产 | 亚洲人成网站精品片在线观看 | www.亚洲视频.com | 成人av网站在线播放 | 久久国产精品视频观看 | 成人亚洲免费 | 三级在线国产 | 久久一区二区三区超碰国产精品 | 97人人网 | 久久精品国产成人精品 | 久久国产成人午夜av影院宅 | 成人网色| 操操操操网 | 国产香蕉97碰碰碰视频在线观看 | 国产精品地址 | 蜜桃视频精品 | 久久久久人人 | 中文字幕一区二 | 中文字幕av全部资源www中文字幕在线观看 | 久久小视频 | 一区中文字幕电影 | 免费国产黄线在线观看视频 | 亚洲国产成人在线观看 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 99热这里只有精品1 av中文字幕日韩 | www.色午夜| 成人黄色大片在线观看 | 国产精品一区二区免费视频 | 永久免费看av | 九九免费观看全部免费视频 | 午夜国产一区二区 | 亚洲少妇xxxx | 久久久电影网站 | 亚洲黄色在线观看 | 中文字幕二区三区 | 色婷婷五 | 超黄视频网站 | 天堂在线一区 | 亚洲国产资源 | 中文字幕在线视频网站 | 久热爱| 91av小视频| 欧美成人区 | 国产成人在线免费观看 | 永久精品视频 | 天天综合导航 | av免费播放| 四虎www. | 奇米影视999 | 免费久久99精品国产 | 久久久久久久久久久综合 | 国产在线观看你懂的 | 韩日av在线 | 国产精品免费不卡 | 国产91亚洲精品 | 一区二区成人国产精品 | 欧美激情va永久在线播放 | 久草免费在线视频 | 九九综合久久 | 久久兔费看a级 | 黄色视屏免费在线观看 | 岛国av在线不卡 | 欧美极品在线播放 | 日韩av成人免费看 | 亚洲精品五月天 | 成人毛片一区二区三区 | 91高清免费看 | 五月天激情电影 | 成人a免费视频 | 2019天天干天天色 | 国产专区在线 | 国产亚洲婷婷免费 | 99色亚洲 | 久久69精品久久久久久久电影好 | 在线v片免费观看视频 | 免费观看91视频大全 | 国产精品婷婷午夜在线观看 | 欧美成人亚洲 | 九月婷婷色| 亚洲 中文 欧美 日韩vr 在线 | 丁香婷婷基地 | 在线观看中文字幕av | 日韩精品首页 | a级国产乱理论片在线观看 特级毛片在线观看 | 精品一区二区久久久久久久网站 | 久久在线| 国产老太婆免费交性大片 | 国产99久久精品 | 精品一区二区免费视频 | www.香蕉| www激情网 | 国产视频不卡一区 | 日日夜夜噜噜噜 | 福利一区二区 | 国产成人精品av | 一级片黄色片网站 | 日日操日日插 | 国产不卡av在线 | 日韩毛片在线播放 | 欧美日韩在线视频免费 | 久久久人 | 最新中文字幕在线播放 | 超碰97久久 | 天天色综合三 | 草久久av | 激情婷婷六月 | 99re热精品视频 | 日韩三级av| 久久视频中文字幕 | 81精品国产乱码久久久久久 | 在线视频专区 | 国产精品乱码久久久久 | 深夜免费福利视频 | 91高清免费在线观看 | 亚洲精品国产综合久久 | 国产精品久久久久久一区二区三区 | 激情在线免费视频 | www五月天| 人人干天天干 | 91视频免费看片 | 91女子私密保健养生少妇 | 日韩欧美综合精品 | 91精品电影 | av日韩在线网站 | 一级淫片在线观看 | 久久国产精品免费视频 | 国产伦精品一区二区三区… | 天天摸夜夜添 | 久久欧洲视频 | 九九热视频在线播放 | 97人人模人人爽人人喊中文字 | 久久国产露脸精品国产 | 国产在线无 | 色综合久久综合中文综合网 | 精品网站999www| 日本精品一区二区三区在线播放视频 | 黄色软件视频网站 | 久操视频在线免费看 | 91麻豆看国产在线紧急地址 | 亚洲 成人 一区 | 99精品国产免费久久久久久下载 | 成人免费在线网 | 特级毛片在线观看 | 久久精品欧美一区 | 亚洲第一区精品 | 欧美日韩视频一区二区 | 中文字幕日本在线观看 | 精品日韩av| www.亚洲黄 | 看av免费| 公与妇乱理三级xxx 在线观看视频在线观看 | 日韩国产精品久久久久久亚洲 | 精品在线观看视频 | 精品国产人成亚洲区 | 国产韩国精品一区二区三区 | 国产无区一区二区三麻豆 | 欧美精品久久天天躁 | 黄在线 | 久久精品79国产精品 | 亚洲少妇自拍 | 日日夜夜操操操操 | 国产欧美最新羞羞视频在线观看 | 国产精品女| 久久久福利视频 | 狠狠的操狠狠的干 | av网站免费看 | 国产在线免费观看 |