Python Matplotlib 네트워크 x 기반 네트워크 그림

머리말
어제 서 야 접촉 을 시 작 했 습 니 다.오후 내 내 소란 을 피 웠 습 니 다.그 다음 에 계속 업 데 이 트 를 할 것 입 니 다.잘못된 점 이 있 으 면 여러분 의 지적 을 바 랍 니 다.감사합니다!
데이터 기술
두 파일,한 파일 은 네트워크 그림 의 노드 를 포함 하고 노드 는 분류(0,1,2,3)네 가지 가 존재 하지만 0 분 류 는 버 리 고 그리 지 않 습 니 다.다른 파일 은 네트워크 그림 의 변 을 포함 하고 데이터 의 기본 특징 은 다음 과 같다.
             
그림 1 에서 id 는 노드 를 나타 내 고 b 는 유형 이다.그림 2 에서 두 숫자 는 연결 의 두 점 을 나타 낸다.
Networkx
설치 하 다.
제 시스템 은 Mac OS 입 니 다.terminal 에 sudo pip install network x 를 직접 입력 하면 설치 할 수 있 습 니 다.코드 에 몇 가지 함수 가 포함 되 어 있 기 때문에 python 3 에서 오 류 를 보고 할 수 있 습 니 다.저 는 python 2.7.13 으로 이 루어 졌 습 니 다.
기본 사용 방법

import networkx as nx          #  networkx 
import matplotlib.pyplot as plt   #     matplotlib(    ,        )
G =nx.random_graphs.barabasi_albert_graph(100,1)  #    BA     G
nx.draw(G)             #    G
plt.savefig("ba.png")      #    1:        png       
plt.show()              #    2:           
매개 변수 소개 기본
- `node_size`:지정 한 노드 의 크기(기본 값 은 300 이 고 단 위 는 알 수 없 으 며 위의 그림 에서 그렇게 큰 점 입 니 다)
- `node_color`:지정 한 노드 의 색상(기본 값 은 빨간색 입 니 다.문자열 로 색상 을 간단하게 표시 할 수 있 습 니 다.예 를 들 어'r'는 빨간색,'b'는 녹색 등 입 니 다.구체 적 으로 매 뉴 얼 을 볼 수 있 습 니 다)
- `node_shape`:노드 의 모양(기본 값 은 원형 이 고 문자열'o'로 표시 되 며 구체 적 으로 매 뉴 얼 을 볼 수 있 습 니 다)
-'alpha':투명도(기본 값 1.0,불투명,0 은 완전 투명)
-'width':변 의 너비(기본 값 1.0)
- `edge_color`:가장자리 색상(기본 값 은 검은색)
-'style':변 의 스타일(기본적으로 구현,선택 가능:solid|dashed|dotted,dashdot)
- `with_labels`:노드 에 탭 이 있 는 지 여부(기본 값 은 True)
- `font_size`:노드 탭 글꼴 크기(기본 값 12)
- `font_color`:노드 탭 글꼴 색상(기본 값 은 검은색)
배치
  • circular_layot:노드 는 하나의 링 에 고 르 게 분포 한다
  • random_layot:노드 랜 덤 분포
  • shell_layot:노드 는 동심원 에 분포 한다
  • spring_layot:Fruchterman-Reingold 알고리즘 으로 노드 를 배열 합 니 다
  • spectral_layot:그림 의 라 프 라 스 특징 벡터 에 따라 노드 를 배열 합 니 다
  • 코드
    
    # coding:utf-8
     
     
    import networkx as nx 
    import matplotlib.pyplot as plt
    import csv
     
    with open('node-8.csv','rb') as csvfile:
    	reader = csv.DictReader(csvfile)
    	column = [row['b'] for row in reader]
    	id_tag0 = [row['id'] for row in reader]
    #print column
    id_tag = []
    for item in id_tag0:
    	id_tag.append(int(item))
     
    # =================Setting node parameters====================
    node_0 = []
    node_1 = []
    node_2 = []
    node_3 = []
    node_color = []
    node_color_y = []
    node_color_r = []
    node_color_g = []
    node_color_b = []
    node_shape = []
    node_shape_0 = []
    node_shape_1 = []
    node_shape_2 = []
    node_shape_3 = []
     
    for i in range(len(column)):
    	if int(column[i]) == 0:
    		pass
    	elif int(column[i]) == 1:
    		color = 'r'
    		shape = 'o'
    		node_1.append(i)
    		node_color_r.append(color)
    		node_shape_1.append(shape)
    	elif int(column[i]) == 2:
    		color = 'g'
    		shape = 'o'
    		node_2.append(i)
    		node_color_g.append(color)
    		node_shape_2.append(shape)
    	else:
    		color = 'b'
    		shape = '*'
    		node_3.append(i)
    		node_color_b.append(color)
    		node_shape_3.append(shape)
    	node_color.append(color)
    	node_shape.append(shape)
    # ==============================================================
     
     
    with open('node-8.csv','rb') as csvfile:
    	reader = csv.DictReader(csvfile)
    	column1 = [row['b'] for row in reader]
    	id_tag1 = [row['id'] for row in reader]
    #print column
    id_tag11 = []
    for item in id_tag1:
    	id_tag11.append(int(item))
     
     
     
    edge = []
    with open('edge-8.txt','r') as f: 
    	data = f.readlines() 
    	for line in data:
    		#print line
    		line = tuple(line.replace('\r','').replace('
    ','').replace('\t','').split(',')) edge.append(line) #print edge # ===============Setting edge parameters========================= edge_color = [] edge_style = [] for item in edge: #print item if int(column1[int(item[0])]) == 0 or int(column1[int(item[1])]) == 0: pass elif int(column1[int(item[0])]) == 1 or int(column1[int(item[1])]) == 1: color = 'r' #style0 = 'dashdot' #color_r_list.append(color) elif int(column1[int(item[0])]) == 2 or int(column1[int(item[1])]) == 2: color = 'g' #style0 = 'dashed' #color_r_list.append(color) else: color = 'b' #style0 = 'dotted' #color_b_list.append(color) edge_color.append(color) #edge_style.append(style0) G = nx.Graph() #G.add_nodes_from(id_tag) G.add_edges_from(edge) #nx.draw(G,pos=nx.random_layout(G), nodelist = node_0, node_color = node_color_y, node_size=120, node_shape=node_shape_0) #nx.draw(G,pos=nx.random_layout(G), nodelist = node_1, node_color = node_color_r, node_size=120, node_shape=node_shape_1) #nx.draw(G,pos=nx.random_layout(G), nodelist = node_2, node_color = node_color_g, node_size=120, node_shape=node_shape_2) #nx.draw(G,pos=nx.random_layout(G), nodelist = node_3, node_color = node_color_b, node_size=120, node_shape=node_shape_3) nx.draw_networkx(G,pos=nx.random_layout(G),node_color=node_color,node_size=10,node_shape='o',edge_color=edge_color,width=0.3,style='solid',font_size=8) #nx.draw_networkx(G,pos=nx.random_layout(G),nodelist = node_1,node_color=node_color,node_size=100,node_shape='o',style='dashdot') #nx.draw_networkx(G,pos=nx.random_layout(G),node_color=color_g_list,node_size=150,node_shape='^',style='dashed') #nx.draw_networkx(G,pos=nx.random_layout(G),node_color=color_b_list,node_size=150,node_shape='*',style='dotted') #plt.legend() #nx.draw_networkx(G) plt.show()
    그림 을 그리다

    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기