2016-03-28 5 views
1

Ich habe einen Python-Code ein Zufallsgraphen von 300 Knoten und 200 Kanten und anzeigenHohe Auflösung Bild eines Diagramms mit NetworkX und Matplotlib

import networkx as nx 
import matplotlib.pyplot as plt 

G = nx.gnm_random_graph(300,200) 
graph_pos = nx.spring_layout(G) 
nx.draw_networkx_nodes(G, graph_pos, node_size=10, node_color='blue', alpha=0.3) 
nx.draw_networkx_edges(G, graph_pos) 
nx.draw_networkx_labels(G, graph_pos, font_size=8, font_family='sans-serif') 
plt.show() 

jedoch zu erzeugen, weil es zu viele Knoten ist, ich brauche um mehr Pixel zu haben, damit ich hineinzoomen und speichern kann.

Wenn ich

plt.figure(figsize=(18,18)) 

setzen, bevor zeigen, dann sind die Knoten und Kanten nicht erscheinen. Was ist das Problem und wie behebe ich das?

Antwort

4

Das Plotfenster verwendet die Bildschirmauflösung und Sie können es ohne Informationsverlust vergrößern. Wenn Sie eine figure kurz vor der Anzeige setzen, ist das einzige, was passieren sollte, dass zwei Fenster erscheinen (weil Sie bereits eine Figur haben). Also, wenn Sie Abbildung Größe tun es anpassen möchten, gerade vor dem Grundstück bevölkern:

import networkx as nx 
import matplotlib.pyplot as plt 

plt.figure(figsize=(18,18)) 

G = nx.gnm_random_graph(300,200) 
graph_pos = nx.spring_layout(G) 
nx.draw_networkx_nodes(G, graph_pos, node_size=10, node_color='blue', alpha=0.3) 
nx.draw_networkx_edges(G, graph_pos) 
nx.draw_networkx_labels(G, graph_pos, font_size=8, font_family='sans-serif') 

plt.show() 

ein Bild zu haben (hier Auflösung ist wichtig), die Sie zoomen und vermeiden große Pixel zu sehen, können Sie entweder:

plt.savefig("plot.png", dpi=1000) 

, Speichern eines PNG mit einer sehr großen dpi. Oder:

plt.savefig("plot.pdf") 

, die das Grundstück als Vektorgrafik speichern (in pdf). Das Matplotlib-Diagrammfenster verfügt über ein Werkzeug, mit dem Sie in einen beliebigen Teil des Diagramms hineinzoomen können:

Zoom tool in matplotlib plot

Verwandte Themen