将多行绘制为单个Python图形

时间:2016-06-24 14:40:50

标签: python python-2.7 matplotlib plot

这是我的第一个Stack Overflow问题,如果此问题的格式不符合Stack Overflow社区的约定,请原谅。

我的问题是你如何(如果可能的话)使用pyplot为现有的Python数字添加一行?基本上,我想要完成的是我想编译并运行我的代码并生成一个带有一行的图形。然后,我想要做的是更改代码中的一些数据,再次编译和运行代码,然后让代码运行生成的行显示在已有的数据上。

fig=plt.figure(figsize=(20,10))
time= np.array(range(0, time_steps+1)) 
sigma_11=Q[:, :, :, 0]
sigma_22=Q[:, :, :, 1]
sigma_12=Q[:, :, :, 2]
vel_x=Q[:, :, :, 3]
vel_y=Q[:, :, :, 4]
stiffness_mat=np.mat([[lamda+2*mu, lamda, 0],
                    [lamda, lamda+2*mu, 0],
                    [0, 0, 2*mu]])

Energ_P=np.zeros((time_steps+1))  
Energ_K=np.zeros((time_steps+1))
Energy_tot=np.zeros((time_steps+1))     
    for n in  range(0, time_steps+1):
Energ_P[n]=(Energy_P(stiffness_mat, Q[:, :, n, 0:3]))
Energ_K[n]=(Energy_K(Q[:, :, n, 3:5]))
Energy_tot[n]=Energ_P[n]+Energ_K[n]

sub1=fig.add_subplot(1, 2, 1)  
sub1.set_title('stress-time')
sub1.plot(time*del_t, sigma_11[bar_cells_x, bar_cells_y, :], label='stress_1')
sub1.plot(time*del_t, sigma_11[bar_cells_x/2, bar_cells_y/2, :], label='stress')
sub1.set_ylabel('sigma_11 [Pa]')
sub1.set_xlabel('time [s]')
sub1.legend(loc='best', fontsize='10')

plt.tight_layout()
plt.show()

我还没有尝试过很多东西来解决这个问题,除了多次运行代码。然而,当我这样做时,我最终做的就是产生多个数字。

1 个答案:

答案 0 :(得分:1)

尝试将num参数添加到plt.figure。换句话说,将fig=plt.figure(figsize=(20,10))替换为fig=plt.figure(num=1, figsize=(20,10))

来自文档,

  

num:integer或string,optional,default:none

     

如果未提供,将创建一个新图形,图形编号将递增。