我必须绘制单个实现和两个与时间相关的可观察量(这里称为a和b)的平均值。出于紧凑性原因,我选择通过twinx使用其他y轴将它们绘制在同一张图中。
我希望两个平均时间序列(mean_a和mean_b)站在前台,而每个可观察到的(三个)单一实现在后台。
这是我的代码的样子:
fig, ax1 = plt.subplots(figsize=(10, 9), dpi=300)
ax1.tick_params(axis = 'both', which = 'major', labelsize = 30)
ax1.set_xlim(-1.0, 5.0)
ax1.set_ylim(0.0, 0.08)
ax1.plot(t, a[0], color='lightcoral', linewidth=2)
ax1.plot(t, a[1], color='lightcoral', linewidth=2)
ax1.plot(t, a[2], color='lightcoral', linewidth=2)
ax1.set_xlabel('Time (h)', fontsize=32)
ax1.set_ylabel(r'a(t) ($\mu m$)', fontsize=32, color='r')
ax2 = ax1.twinx()
ax2.set_xlim(-1.0, 5.0)
ax2.set_ylim(0.0, 0.4)
ax2.plot(t, b[0], color='lightskyblue', linewidth=2)
ax2.plot(t, b[1], color='lightskyblue', linewidth=2)
ax2.plot(t, b[2], color='lightskyblue', linewidth=2)
ax1.plot(t, mean_a, color='red', linewidth=6)
ax2.plot(t, mean_b, color='blue', linewidth=6)
ax2.set_ylabel(r'b(t) ($\mu m$)', fontsize=32, color='b')
name = "example"
plt.savefig(name, format="pdf")
plt.close()
默认情况下,新轴将始终覆盖旧轴(如文档中所述),这意味着我将让mean_a包含在单个实现b [0],b [1]和b [3]中。 / p>
为不同的y轴分配不同的zorder值将无法解决问题(我的mean_b将被a [0],a [1]和a [3]覆盖)。