一.networkx

1.用于图论和复杂网络

2.官网:http://networkx.github.io/

3.networkx常常结合numpy等数据处理相关的库一起使用,通过matplot来可视化图

二.绘制图

1.创建图

  1. import networkx as nx
  2. import matplotlib.pyplot as plt
  3.  
  4. G=nx.Graph()#创建空图,无向图
  5. # G1=nx.DiGraph(e)#创建空图,有向图
  6. # G = nx.Graph(name='my graph')#指定图的属性(name) 的值(my graph)
  7. G.add_edges_from(([1,2],[2,3],[3,1]))
  8.  
  9. e = [(1, 2), (2, 3), (3, 4)] # 边的列表
  10. G2 = nx.Graph(e)#根据e来创建图
  11.  
  12. F=G.to_directed()#把无向图转换为有向图
  13.  
  14. #创建多图,类MultiGraph和类MultiDiGraph允许添加相同的边两次,这两条边可能附带不同的权值
  15. # H=nx.MultiGraph(e)
  16. H=nx.MultiDiGraph(e)
  17.  
  18. plt.subplot(2,2,1)
  19. nx.draw(G,with_labels=True)
  20. plt.subplot(2,2,2)
  21. nx.draw(G2,with_labels=True)
  22. plt.subplot(2,2,3)
  23. nx.draw(F,with_labels=True)
  24. plt.subplot(2,2,4)
  25. nx.draw(H,with_labels=True)
  26.  
  27. plt.show()

创建图

2.无向图

  1. import networkx as nx
  2. import matplotlib.pyplot as plt
  3.  
  4. G=nx.Graph()#创建空图
  5.  
  6. #添加节点
  7. G.add_node('a')
  8. G.add_node(1) #添加单个节点
  9. G.add_nodes_from([2,3,4]) #添加一些节点,容器,(可以是list, dict, set,)
  10.  
  11. #添加边,如果点不在图中,会自动创建点
  12. G.add_edge(1,'a',weight=1.2) #添加单条边,连接1,‘a’的边,可以赋予边属性以及他的值
  13. G.add_edges_from([(2,3),(3,4)])#添加一些边(列表)
  14. G.add_weighted_edges_from([(1,'a',0.1),(4,2,0.5)])#给边赋予权重
  15.  
  16. #移除边
  17. G.remove_edge(2,4) #移除一条边
  18. G.remove_edges_from([(3,4),]) #移除一些边
  19.  
  20. #移除节点,同时移除他对应的边
  21. G.remove_node(1) #移除单个节点
  22. G.remove_nodes_from([4,]) #移除一些节点
  23.  
  24. #绘图
  25. nx.draw(G, # 图
  26. pos=nx.circular_layout(G), # 图的布局
  27. alpha=0.5, # 图的透明度(默认1.0不透明,0完全透明)
  28.  
  29. with_labels=True, # 节点是否带标签
  30. font_size=18, # 节点标签字体大小
  31. node_size=400, # 指定节点的尺寸大小
  32. node_color='blue', # 指定节点的颜色
  33. node_shape='o', # 节点的形状
  34.  
  35. edge_color='r', # 边的颜色
  36. width=0.8, # 边的宽度
  37. style='solid', # 边的样式
  38.  
  39. ax=None, # Matplotlib Axes对象,可选在指定的Matplotlib轴中绘制图形。
  40. )
  41.  
  42. plt.show()

无向图

绘图布局

3.有向图和无向图的最大差别在于:有向图中的边是有顺序的,前一个表示开始节点,后一个表示结束节点。

三.图

数据结构

1.图的属性

  1. #像color,label,weight或者其他Python对象的属性都可以被设置为graph,node,edge的属性
  2. # 每个graph,node,edge都能够包含key/value这样的字典数据
  3. import networkx as nx
  4. import matplotlib.pyplot as plt
  5.  
  6. G=nx.DiGraph([(1,2),(2,3),(3,4),(1,4),(4,2)],name='my digraph',a='b')
  7. #创建一个有向图,赋予边,点,权重,以及有向图的属性name的值my digraph
  8.  
  9. #属性都可以在定义时赋予,或者通过直接赋值来添加修改
  10. #图属性
  11. print(G)#图的名称
  12. print(G.graph)#图的属性,字典
  13. G.graph['b']=19#赋予属性
  14. print(G.graph)
  15. print('#'*60)
  16.  
  17. #节点属性
  18. print('图的节点:',G.nodes)#列表
  19. print('节点个数:',G.number_of_nodes())
  20. G.add_node('b',time='0.2')
  21. print(G.node['b'])#显示单个节点的信息
  22. G.node['b']['time']=0.3#修改属性
  23. print(G.node['b'])
  24. print('#'*60)
  25.  
  26. #边属性
  27. print('图的边:',G.edges)#列表
  28. print ('边的个数:',G.number_of_edges())
  29. G.add_edge('a','b',weight=0.6)
  30. G.add_edges_from( [ (2,3),(3,4) ], color="red")
  31. G.add_edges_from( [(1,2,{"color":"blue"}),(4,5,{"weight":8})])
  32. G[1][2]["width"]=4.7#添加或修改属性
  33. print(G.get_edge_data(1, 2))#获取某条边的属性
  34. print('#'*60)
  35.  
  36. nx.draw(G,pos = nx.circular_layout(G),with_labels=True)
  37.  
  38. plt.show
  39. --------------------------------------------------------------------------
  40. my digraph
  41. {'name': 'my digraph', 'a': 'b'}
  42. {'name': 'my digraph', 'a': 'b', 'b': 19}
  43. ############################################################
  44. 图的节点: [1, 2, 3, 4]
  45. 节点个数: 4
  46. {'time': '0.2'}
  47. {'time': 0.3}
  48. {2: {}, 4: {}}
  49. ############################################################
  50. 图的边: [(1, 2), (1, 4), (2, 3), (3, 4), (4, 2)]
  51. 边的个数: 5
  52. {'color': 'blue', 'width': 4.7}

属性

2.边和节点

  1. import networkx as nx
  2. import matplotlib.pyplot as plt
  3.  
  4. G=nx.DiGraph([(1,2,{'weight':10}),(2,3),(3,4),(1,4),(4,2)])
  5.  
  6. nx.add_path(G, [0, 4,3])#在图中添加路径
  7.  
  8. # 对1节点进行分析
  9. print(G.node[1])#节点1的信息
  10. G.node[1]['time']=1#赋予节点属性
  11. print(G.node[1])
  12. print(G[1]) # 1相关的节点的信息,他的邻居和对应的边的属性
  13. print(G.degree(1)) # 1节点的度
  14. print('#'*60)
  15.  
  16. # 对【1】【2】边进行分析
  17. print(G[1][2]) # 查看某条边的属性
  18. G[1][2]['weight'] = 0.4 # 重新设置边的权重
  19. print(G[1][2]['weight']) # 查看边的权重
  20. G[1][2]['color'] = 'blue' # 添加属性
  21. print(G[1][2])
  22.  
  23. nx.draw(G,pos = nx.circular_layout(G),with_labels=True)
  24.  
  25. plt.show()
  26. ------------------------------------------------------------------
  27. {}
  28. {'time': 1}
  29. {2: {'weight': 10}, 4: {}}
  30. 2
  31. ############################################################
  32. {'weight': 10}
  33. 0.4
  34. {'weight': 0.4, 'color': 'blue'}

边和节点

3.有向图

  1. import networkx as nx
  2. import matplotlib.pyplot as plt
  3.  
  4. G=nx.DiGraph([(1,2,{'weight':10}),(2,3),(3,4),(1,4),(4,2)])
  5. print('#'*60)
  6. print(G.edges)#An OutEdgeView of the DiGraph as G.edges or G.edges().
  7. print(G.out_edges)#An OutEdgeView of the DiGraph as G.edges or G.edges().
  8. print(G.in_edges)#An InEdgeView of the Graph as G.in_edges or G.in_edges()
  9. print('#'*60)
  10.  
  11. print(G.degree)#图的度
  12. print(G.out_degree)#图的出度
  13. print(G.in_degree)#图的入度
  14. print('#'*60)
  15.  
  16. print(G.adj)#Graph adjacency object holding the neighbors of each node
  17. print(G.neighbors(2))#节点2的邻居
  18. print(G.succ)#Graph adjacency object holding the successors of each node
  19. print(G.successors(2))#节点2的后继节点
  20. print(G.pred)#Graph adjacency object holding the predecessors of each node
  21. print(G.predecessors(2))#节点2的前继节点
  22. #以列表形式打印
  23. print([n for n in G.neighbors(2)])
  24. print([n for n in G.successors(2)])
  25. print([n for n in G.predecessors(2)])
  26.  
  27. nx.draw(G,pos = nx.circular_layout(G),with_labels=True)
  28.  
  29. plt.show()
  30. --------------------------------------------------------
  31. ############################################################
  32. [(1, 2), (1, 4), (2, 3), (3, 4), (4, 2)]
  33. [(1, 2), (1, 4), (2, 3), (3, 4), (4, 2)]
  34. [(1, 2), (4, 2), (2, 3), (3, 4), (1, 4)]
  35. ############################################################
  36. [(1, 2), (2, 3), (3, 2), (4, 3)]
  37. [(1, 2), (2, 1), (3, 1), (4, 1)]
  38. [(1, 0), (2, 2), (3, 1), (4, 2)]
  39. ############################################################
  40. {1: {2: {'weight': 10}, 4: {}}, 2: {3: {}}, 3: {4: {}}, 4: {2: {}}}
  41. <dict_keyiterator object at 0x0DA2BF00>
  42. {1: {2: {'weight': 10}, 4: {}}, 2: {3: {}}, 3: {4: {}}, 4: {2: {}}}
  43. <dict_keyiterator object at 0x0DA2BF00>
  44. {1: {}, 2: {1: {'weight': 10}, 4: {}}, 3: {2: {}}, 4: {3: {}, 1: {}}}
  45. <dict_keyiterator object at 0x0DA2BF00>
  46. [3]
  47. [3]
  48. [1, 4]

有向图

4.图的操作

Applying classic graph operations

  1. import networkx as nx
  2. import matplotlib.pyplot as plt
  3.  
  4. G=nx.DiGraph([(1,2,{'weight':10}),(2,1,{'weight':1}),(2,3),(3,4),(1,4),(4,2)])
  5. G2=nx.DiGraph([(1,'a'),('a','b'),(1,4)])
  6.  
  7. H=G.subgraph([1,2,4])#产生关于节点的子图
  8.  
  9. G3=nx.compose(H,G2)#结合两个图并表示两者共同的节点
  10.  
  11. plt.subplot(221)
  12. nx.draw(G,pos = nx.circular_layout(G),with_labels=True,name='G')
  13.  
  14. plt.subplot(222)
  15. nx.draw(H,pos = nx.circular_layout(G),with_labels=True)
  16.  
  17. plt.subplot(223)
  18. nx.draw(G2,with_labels=True)
  19.  
  20. plt.subplot(224)
  21. nx.draw(G3,with_labels=True)
  22.  
  23. plt.show()

生成图

4.算法

...

四.简单根据数据画图

  1. import networkx as nx
  2. import matplotlib.pyplot as plt
  3.  
  4. #1.导入数据:
  5. # networkx支持的直接处理的数据文件格式adjlist/edgelist/gexf/gml/pickle/graphml/json/lead/yaml/graph6/sparse6/pajek/shp/
  6. #根据实际情况,把文件变为gml文件
  7. G1 = nx.DiGraph()
  8. with open('file.txt') as f:
  9. for line in f:
  10. cell = line.strip().split(',')
  11. G1.add_weighted_edges_from([(cell[0],cell[1],cell[2])])
  12. nx.write_gml(G1,'file.gml')#写网络GGML文件
  13.  
  14. G=nx.read_gml("file.gml") #读取gml文件
  15. # parse_gml(lines[,relael]) 从字符串中解析GML图
  16. # generate_gml(G) 以gml格式生成一个简单条目的网络G
  17.  
  18. print(G.nodes)
  19. print(G.edges)
  20.  
  21. #2.在figure上先设置坐标
  22. plt.title("图G")
  23. plt.ylabel("y")
  24. plt.xlabel("x")
  25. plt.xlim(-1,1)
  26. plt.ylim(-1,1)
  27.  
  28. #再在坐标轴里面调节图形大小
  29. #整个figure按照X与Y轴横竖来平均切分,以0到1之间的数值来表示
  30. #axes([x,y,xs,ys]),如果不设置
  31. #其中x代表在X轴的位置,y代表在Y轴的位置,xs代表在X轴上向右延展的范围大小,yx代表在Y轴中向上延展的范围大小
  32. plt.axes([0.1, 0.1, 0.8, 0.8])
  33.  
  34. #3.在axes中绘图
  35. nx.draw(G,pos = nx.circular_layout(G),with_labels=True,)
  36.  
  37. #4.保存图形
  38. plt.savefig("file.png")#将图像保存到一个文件
  39.  
  40. plt.show()
  41. -----------------------------------------------------
  42. ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
  43. [('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', '')]

绘图

5.分析图

  1. import networkx as nx
  2. import matplotlib.pyplot as plt
  3.  
  4. G=nx.read_gml("file.gml")
  5. UG=G.to_undirected()
  6.  
  7. #网络信息
  8. print(nx.info(G))
  9. eccen = nx.eccentricity(UG)#节点离心度
  10. print(eccen)
  11. print(max(eccen.values()))
  12. print(min(eccen.values()))
  13. # print(nx.diameter(G)) # 网络直径
  14. # print(nx.radius(G)) #网络半径
  15. print(nx.average_shortest_path_length(G)) # 网络平均最短距离
  16. print(nx.average_shortest_path_length(UG)) # 网络平均最短距离
  17.  
  18. #度分布
  19. degree=nx.degree_histogram(G)#所有节点的度分布序列
  20. print(degree)
  21. x=range(len(degree)) #生成x轴序列
  22. y=[z/float(sum(degree))for z in degree]#将频次转换为频率
  23. plt.loglog(x,y,color='blue',linewidth=2)#在双对数坐标轴上绘制分布曲线
  24.  
  25. #度中心度
  26. print(nx.degree_centrality(G))#计算每个点的度中心性
  27. print(nx.in_degree_centrality(G))#计算每个点的入度中心性
  28. print(nx.out_degree_centrality(G))#计算每个点的出度中心性
  29.  
  30. #紧密中心度
  31. print(nx.closeness_centrality(G))
  32.  
  33. #介数中心度
  34. print(nx.betweenness_centrality(G))
  35.  
  36. #特征向量中心度
  37. print(nx.eigenvector_centrality(G))
  38.  
  39. #网络密度
  40. print(nx.density(G))
  41.  
  42. #网络传递性
  43. print(nx.transitivity(G))
  44.  
  45. #网络群聚系数
  46. print(nx.average_clustering(UG))
  47. print(nx.clustering(UG))
  48.  
  49. #节点度的匹配性
  50. print(nx.degree_assortativity_coefficient(UG))
  51.  
  52. plt.show()
  53. ------------------------------------------------------------------

分析图

五.补充

1.更精细地画图,可以绘制特定的边和点,一般默认全画

  1. import networkx as nx
  2. import matplotlib.pyplot as plt
  3.  
  4. #1.获得带权图
  5. G = nx.Graph()
  6. G.add_edges_from([('a', 'b', {'weight':0.6}),
  7. ('a', 'c', {'weight':0.2}),
  8. ('a', 'd', {'weight':0.1}),
  9. ('c', 'e', {'weight':0.7}) ])
  10.  
  11. #2.对不同权重进行处理,取得相应权重的点集列表,比如weight>0.5的点集列表为[('a', 'b'), ('c', 'e')]
  12. elarge = [(u, v) for (u, v, d) in G.edges(data=True) if d['weight'] > 0.5]
  13. esmall = [(u, v) for (u, v, d) in G.edges(data=True) if d['weight'] <= 0.5]
  14. node1=['a','b']
  15. node2=['c','d','e']
  16. node3={ u:v for (u, v, d) in G.edges(data=True) if d['weight'] > 0.5}
  17. edge={(u,v):d['weight'] for (u, v, d) in G.edges(data=True) if d['weight'] > 0.5}
  18.  
  19. #3.必须设定一个统一的布局,保证下面分步绘制的图的统一性,而且分步绘制时pos是一个必须参数
  20. pos = nx.spring_layout(G)
  21.  
  22. #4.分步绘制完整的图
  23. #(1)绘制点,必须参数(G,pos),还可以指定点集(列表或optional)(默认全点集),形状,大小,透明度,等
  24. nx.draw_networkx_nodes(G,pos=pos,nodelist=node1)
  25. nx.draw_networkx_nodes(G,pos=pos,nodelist=node2,node_shape='*',node_color='r',node_size=700)
  26.  
  27. #(2)绘制边,必须参数(G,pos),还可以指定边集(边的元组集合(列表))(默认全边集),形状,大小,透明度,等
  28. nx.draw_networkx_edges(G, pos=pos, edgelist=elarge)
  29. nx.draw_networkx_edges(G, pos=pos, edgelist=esmall,edge_color='b',style='dashed', width=3)
  30.  
  31. #(3)绘制部分节点的标签,必须参数(G,pos),还可以指定点集(字典(值)或optional)(默认全点集),形状,大小,透明度,等
  32. #给node3字典中的值‘b’和‘e’添加标签
  33. nx.draw_networkx_labels(G,pos=pos, labels=node3,font_size=18,font_color='b',font_family='sans-serif')
  34.  
  35. #(4)绘制边的标签,必须参数(G,pos),还可以指定边集(字典:键是边的元组,值是边的某个属性值)(默认全边集),形状,大小,透明度,等
  36. #根据字典,通过键给边添加值的标签,{('a', 'b'): 0.6, ('c', 'e'): 0.7}
  37. nx.draw_networkx_edge_labels(G,pos=pos,edge_labels=edge,font_size=7,font_color='black',font_family='sans-serif')
  38.  
  39. #5.显示
  40. plt.axis('off')
  41. plt.show()

精细地作图

python3 networkx的更多相关文章

  1. Python3画图系列——NetworkX初探

    NetworkX 概述 NetworkX 主要用于创造.操作复杂网络,以及学习复杂网络的结构.动力学及其功能.用于分析网络结构,建立网络模型,设计新的网络算法,绘制网络等等.安装networkx看以参 ...

  2. python3.5安装Numpy、mayploylib、opencv等额外库

    安装Python很简单,但是安装额外的扩展库就好麻烦,没有了第三方库的Python就是一个鸡肋~~  我们现在安装NumPy库 1. 首先这里假设你已经安装了Python了,不会的去看我的另一篇博文( ...

  3. windows7下搭建python环境并用pip安装networkx

    1.安装顺序:Python+pip+pywin32+numpy+matplotlib+networkx 2.版本问题 所安装的所有程序和包都需要具有统一的python版本.系统版本和位宽,所以第一步要 ...

  4. Python3入门(一)——概述与环境安装

    一.概述 1.python是什么 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节.类似于PHP和 ...

  5. Python3.x:第三方库简介

    Python3.x:第三方库简介 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex ...

  6. 使用networkx库可视化对称矩阵的网络图形

    首先我的数据是.mat格式,讲讲如何用python读取.mat格式的数据(全套来) 我是python3版本 第一种读取方法: import h5py features_struct = h5py.Fi ...

  7. python3  threading初体验

    python3中thread模块已被废弃,不能在使用thread模块,为了兼容性,python3将thread命名为_thread.python3中我们可以使用threading进行代替. threa ...

  8. Python3中的字符串函数学习总结

    这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...

  9. Mac-OSX的Python3.5虚拟环境下安装Opencv

    Mac-OSX的Python3.5虚拟环境下安装Opencv 1   关键词 关键词:Mac,OSX,Python3.5,Virtualenv,Opencv 2   概述 本文是一篇 环境搭建 的基础 ...

随机推荐

  1. Spring Security教程(四)

    在前面三个博客的例子中,登陆页面都是用的Spring Security自己提供的,这明显不符合实际开发场景,同时也没有退出和注销按钮,因此在每次测试的时候都要通过关闭浏览器来注销达到清除session ...

  2. Golang微服务实践

    背景 在之前的文章<漫谈微服务>我已经简单的介绍过微服务,微服务特性是轻量级跨平台和跨语言的服务,也列举了比较了集中微服务通信的手段的利弊,本文将通过RPC通信的方式实现一个增删查Redi ...

  3. 数据对象如何定义为Java代码示例

    想将数据保存为这样子: [{ "subject": { "code": "B123", "words": [{ &quo ...

  4. Python 3.X 练习集100题 01

    有以下几个数字:1.2.3.4.5,能组成多少个互不相同且无重复数字的三位数?都是多少? 方法1: import itertools from functools import reduce lyst ...

  5. c# 数据请求方式提供

    营销平台数据请求介绍 项目介绍: 前端使用 WPF,采用MVVM模式  后端数据库采用的sqlite 依靠本地化运行   后期可能会采用WebApi   因为WPF都是自学的 所以 代码方面写的可能不 ...

  6. ps 简单使用 ----- 将图片静态图片制作成动图

    1. 准备好你需要静态图片  放到文件夹中 2.打开ps 软件    将右上角切换为   动感 3.观察下方时间轴   点击加号   将图片导入 按住shift  选择图片 4.切换为帧格式 选择循环 ...

  7. something want to write

    1.时间戳不能相信是因为机器时间有误差.相当于机器不断电的跑着时钟. 2.写log的时候记得log别人的ip,不然没办法很好的debug.

  8. PowerBuilder学习笔记之1开发环境

    Powerbuilder Classic 12.5开发环境(PB经典 12.5) 教材链接:https://wenku.baidu.com/view/5e087d6ab9f67c1cfad6195f3 ...

  9. Windows和Linux简单命令的总结

    MS-DOS 命令提示符(cmd) 启动:                      Win+R,输入cmd回车 切换盘符            盘符名称: 进入文件夹              cd ...

  10. 物联网通讯协议:MQTT,CoAP,NB-IOT,RFID,BLUETOOTH,NFC

    一.按网络四层协议分类: NB-IoT,LORA,WIFI,蓝牙,zigbee,4G都是物理层的,这几个都需要芯片模组支持(硬件支持) 而MQTT,COAP,HTTP都是应用层协议,这些需要开发服务器 ...