在matplotlib中跨替代轴在前景中设置特定曲线(跨轴zorder)

时间:2018-10-09 16:44:57

标签: python matplotlib

我必须绘制单个实现和两个与时间相关的可观察量(这里称为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]覆盖)。

0 个答案:

没有答案