Image haute résolution D'un graphique utilisant NetworkX et Matplotlib
j'ai un code python pour générer un graphe aléatoire de 300 noeuds et 200 arêtes et l'afficher""
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()
cependant, parce qu'il y a trop de noeuds , j'ai besoin d'avoir plus de pixels pour pouvoir zoomer et le sauvegarder.
si je mets
plt.figure(figsize=(18,18))
avant de montrer, puis les noeuds et les bords n'apparaissent pas. Quel est le problème et Comment puis-je résoudre ce problème?
1 réponses
la fenêtre graphique utilise la résolution de l'écran et vous pouvez la zoomer sans perte d'information. Si vous mettez un figure juste avant de le montrer la seule chose qui doit se produire est que deux fenêtres apparaîtront (parce que vous avez déjà une figure de travail). Donc, si vous voulez personnaliser la taille de la figure juste le faire avant de peupler votre parcelle:
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()
pour avoir une image (ici la résolution est importante) que vous pouvez zoomer et éviter de voir de grands pixels, vous pouvez soit:
plt.savefig("plot.png", dpi=1000)
, économisant un png avec un très grand dpi. Ou:
plt.savefig("plot.pdf")
, qui sauvegardera la parcelle sous forme de graphique vectoriel (en pdf). Matplotlib la fenêtre de parcelle a un outil qui vous permet de zoomer sur n'importe quelle partie de la parcelle: