有没有一种方法可以在python中使用matplotlib一次绘制两个图形?

时间:2020-05-22 08:04:29

标签: python numpy matplotlib enumerate

我试图模拟以下化学反应随时间变化的系统,计算并绘制每种分子类型的数目随时间变化的方式:

1S + 0T + 0U --> 0S + 0T + 0U
2S + 0T + 0U --> 0S + 1T + 0U 
0S + 1T + 0U --> 2S + 0T + 0U
0S + 1T + 0U --> 0S + 0T + 1U   

由于S在两个反应中使用,在一个反应​​中被消耗,在另一个反应中产生,因此当我绘制它们时,其结果会偏斜。目前,我要做的绘图代码如下:

for i, label in enumerate(['S', 'T', 'U']):
    plt.plot(popul_num_all[:, i], label=label)
plt.legend()
plt.tight_layout()
plt.show()

这将产生以下情节 enter image description here

此图是根据数组的元素创建的:popul_num = np.array([S, T, U]),其中我使用迭代来更新和存储随时间变化的分子数的新值

但是S的线看起来特别糟糕,有没有办法分开在一张图上绘制S线,然后在第二张图上绘制T和U线?

最简单的方法是只编写两个枚举函数,一个用于S,另一个用于T和U吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试子图

fig, (ax1, ax2) = plt.subplots(1, 2)

ax1.plot(popul_num_all[:, 0], label='S')
ax1.legend()

for i, label in enumerate(['T', 'U']):
    ax2.plot(popul_num_all[:, i+1], label=label)

ax2.legend()
plt.tight_layout()
plt.show()