matplotlib 发生不需要的缩放
Unwanted zooming occurs with matplotlib
我正在绘制处于未更改状态的常规网络 (1) 和处于更改状态的 (2),这意味着它的部分节点出现故障。
我用来创建和绘制它们的代码如下。
(1) 未更改的网络:
import networkx as nx
import matplotlib.pyplot as plt
N=100 #Number of nodes per grid side
G=nx.grid_2d_graph(N,N) #Regular grid
pos = dict( (n, n) for n in G.nodes() ) #Dictionary of all positions
labels = dict( ((i, j), i + (N-1-j) * N ) for i, j in G.nodes() )
nx.set_node_attributes(G, 'pos', pos) #Store pos attributes in the nodes
nx.set_node_attributes(G, 'labels', labels) #Store labels attributes in the nodes
nx.draw_networkx(G, pos=nx.get_node_attributes(G, 'pos'),
labels=nx.get_node_attributes(G, 'labels'),
with_labels=False, node_size=10)
plt.axis('off')
title_string=('Lattice Network')
subtitle_string=(''+str(N)+'x'+str(N)+' = '+str(N*N)+' nodes | Average degree <k>: '+str(avg_degree_unaltered))
plt.suptitle(title_string, y=0.99, fontsize=17)
plt.title(subtitle_string, fontsize=8)
plt.savefig('100x100_lattice.png', dpi=1000,bbox='tight')
plt.close()
nx.relabel_nodes(G,labels,False)
(2) 改变的网络:
G2=dict((k, v) for k, v in status_nodes_model.items() if v < 1) #A special dict which holds the nodes that have failed due to a particular interaction
G.remove_nodes_from(G2) #We remove the failed nodes from graph G
nx.draw_networkx(G, pos=nx.get_node_attributes(G, 'pos'),
labels=nx.get_node_attributes(G, 'labels'),
with_labels=False, node_size=10)
plt.axis('off')
title_string=('Lattice Network, Stage 2') #Refers to step 11
subtitle_string=('Impact & dynamics | Active nodes: '+str(act_nodes_model)+' | Failed nodes: '+str(failed_nodes_haz+failed_nodes_model)+' | Total failure percentage: '+str(numpy.around(100*(failed_nodes_haz+failed_nodes_model)/10000,2))+'%')
plt.suptitle(title_string, y=0.99, fontsize=17)
plt.title(subtitle_string, fontsize=8)
plt.annotate('Event: '+file[6:12], xy=(0.5,0), xycoords=('axes fraction', 'figure fraction'), xytext=(0, 15), textcoords='offset points', size=8, ha='center', va='bottom')
plt.savefig(filelabel+'_100x100_lattice_stage2.png', dpi=1000,bbox='tight')
plt.close()
注意:由于失败,网络 (2) 的节点少于网络 (1)。
我的问题: 当我用 matplotlib 绘制两个网络时,我有一个正确的网络 (1) 显示,但是一个不需要的缩放应用于网络 (2) 的图像,导致 拉伸形状 。
如何避免这种情况并确保两个网络都以与网络 (1) 相同的比例绘制? 谢谢!
图片:
只保存第一个图的限制(在开始图 2 之前)
xlim = plt.xlim()
ylim = plt.ylim()
并将它们应用于第二个图
plt.gca().set_xlim(xlim)
plt.gca().set_ylim(ylim)
我正在绘制处于未更改状态的常规网络 (1) 和处于更改状态的 (2),这意味着它的部分节点出现故障。
我用来创建和绘制它们的代码如下。
(1) 未更改的网络:
import networkx as nx
import matplotlib.pyplot as plt
N=100 #Number of nodes per grid side
G=nx.grid_2d_graph(N,N) #Regular grid
pos = dict( (n, n) for n in G.nodes() ) #Dictionary of all positions
labels = dict( ((i, j), i + (N-1-j) * N ) for i, j in G.nodes() )
nx.set_node_attributes(G, 'pos', pos) #Store pos attributes in the nodes
nx.set_node_attributes(G, 'labels', labels) #Store labels attributes in the nodes
nx.draw_networkx(G, pos=nx.get_node_attributes(G, 'pos'),
labels=nx.get_node_attributes(G, 'labels'),
with_labels=False, node_size=10)
plt.axis('off')
title_string=('Lattice Network')
subtitle_string=(''+str(N)+'x'+str(N)+' = '+str(N*N)+' nodes | Average degree <k>: '+str(avg_degree_unaltered))
plt.suptitle(title_string, y=0.99, fontsize=17)
plt.title(subtitle_string, fontsize=8)
plt.savefig('100x100_lattice.png', dpi=1000,bbox='tight')
plt.close()
nx.relabel_nodes(G,labels,False)
(2) 改变的网络:
G2=dict((k, v) for k, v in status_nodes_model.items() if v < 1) #A special dict which holds the nodes that have failed due to a particular interaction
G.remove_nodes_from(G2) #We remove the failed nodes from graph G
nx.draw_networkx(G, pos=nx.get_node_attributes(G, 'pos'),
labels=nx.get_node_attributes(G, 'labels'),
with_labels=False, node_size=10)
plt.axis('off')
title_string=('Lattice Network, Stage 2') #Refers to step 11
subtitle_string=('Impact & dynamics | Active nodes: '+str(act_nodes_model)+' | Failed nodes: '+str(failed_nodes_haz+failed_nodes_model)+' | Total failure percentage: '+str(numpy.around(100*(failed_nodes_haz+failed_nodes_model)/10000,2))+'%')
plt.suptitle(title_string, y=0.99, fontsize=17)
plt.title(subtitle_string, fontsize=8)
plt.annotate('Event: '+file[6:12], xy=(0.5,0), xycoords=('axes fraction', 'figure fraction'), xytext=(0, 15), textcoords='offset points', size=8, ha='center', va='bottom')
plt.savefig(filelabel+'_100x100_lattice_stage2.png', dpi=1000,bbox='tight')
plt.close()
注意:由于失败,网络 (2) 的节点少于网络 (1)。
我的问题: 当我用 matplotlib 绘制两个网络时,我有一个正确的网络 (1) 显示,但是一个不需要的缩放应用于网络 (2) 的图像,导致 拉伸形状 。 如何避免这种情况并确保两个网络都以与网络 (1) 相同的比例绘制? 谢谢!
图片:
只保存第一个图的限制(在开始图 2 之前)
xlim = plt.xlim()
ylim = plt.ylim()
并将它们应用于第二个图
plt.gca().set_xlim(xlim)
plt.gca().set_ylim(ylim)