使用matplotlib:绘制两个y轴上的误差线

时间:2015-12-06 01:17:30

标签: python matplotlib plot axes errorbar

我想绘制一个带有x和y误差条的系列,然后绘制第二个系列,其中第二个y轴上的x和y误差条都在同一个子图上。可以用matplotlib完成吗?

import matplotlib.pyplot as plt
plt.figure()
ax1 = plt.errorbar(voltage, dP, xerr=voltageU, yerr=dPU)
ax2 = plt.errorbar(voltage, current, xerr=voltageU, yerr=currentU)
plt.show()

基本上,我想将ax2放在第二个轴上,并在右侧放置刻度。

谢谢!

2 个答案:

答案 0 :(得分:2)

twinx()是您添加辅助y轴的朋友,例如:

import matplotlib.pyplot as pl
import numpy as np

pl.figure()

ax1 = pl.gca()
ax1.errorbar(np.arange(10), np.arange(10), xerr=np.random.random(10), yerr=np.random.random(10), color='g')

ax2 = ax1.twinx()
ax2.errorbar(np.arange(10), np.arange(10)+5, xerr=np.random.random(10), yerr=np.random.random(10), color='r')

除了:{/ p>之外,没有很多documentation

  

matplotlib.pyplot.twinx(AX =无)   制作共享x轴的第二个轴。新轴将覆盖ax(如果ax为None,则覆盖当前轴)。 ax2的刻度将放在右侧,并返回ax2实例。

答案 1 :(得分:0)

我正在努力分享x轴,但谢谢你@Bart你救了我! 简单的解决方案是使用twiny而不是twinx

ax1.errorbar(layers, scores_means[str(epoch)][h,:],np.array(scores_stds[str(epoch)][h,:]))

# Make the y-axis label, ticks and tick labels match the line color.
ax1.set_xlabel('depth', color='b')
ax1.tick_params('x', colors='b')

ax2 = ax1.twiny()
ax2.errorbar(hidden_dim, scores_means[str(epoch)][:,l], np.array(scores_stds[str(epoch)][:,l]))
ax2.set_xlabel('width', color='r')
ax2.tick_params('x', colors='r')

fig.tight_layout()
plt.show()