我有一个python代码来生成300个节点和200个边缘的随机图并显示它
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()
但是,由于节点太多,我需要有更多像素才能放大并保存。
如果我把
plt.figure(figsize=(18,18))
在显示之前,节点和边缘不会出现。问题是什么?如何解决这个问题?
答案 0 :(得分:4)
绘图窗口使用屏幕分辨率,您可以在不丢失信息的情况下进行缩放。如果你在显示它之前放置一个figure
,那么唯一应该发生的就是会出现两个窗口(因为你已经有一个数字工作)。因此,如果您想自定义图形大小,请在填充图表之前执行此操作:
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()
要获得一个图像(此处分辨率很重要),您可以缩放并避免看到大像素:
plt.savefig("plot.png", dpi=1000)
,保存一个非常大的dpi的png。或者:
plt.savefig("plot.pdf")
,它将绘图保存为矢量图形(转换为pdf)。 Matplotlib绘图窗口有一个工具,可以放大到绘图的任何部分: