1

我想绘制一个带有 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 放在第二个轴上,并将刻度放在右侧。

谢谢!

4

2 回答 2

3

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')

没有很多文档,除了:

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

于 2015-12-06T06:07:14.163 回答
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()
于 2017-03-06T09:47:48.440 回答