Я думаю, что ручной вызов next()
на prop_cycler
, как предлагается в другом ответе , немного подвержен ошибкам, потому что его легко забыть.Чтобы автоматизировать процесс, вы можете сделать так, чтобы обе оси использовали один и тот же циклер:
ax2._get_lines.prop_cycler = ax1._get_lines.prop_cycler
Да, это все еще уродливый хак, поскольку он зависит от внутренних деталей реализации, а не от определенного интерфейса.Но при отсутствии официальной функции это, вероятно, самое надежное решение.Как видите, вы можете добавлять графики по двум осям в любом порядке, без ручного вмешательства.
Полный код:
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('ggplot')
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax2._get_lines.prop_cycler = ax1._get_lines.prop_cycler
ax1.plot(np.array([1, 2, 3]))
ax2.plot(np.array([3, 5, 4]))
ax1.plot(np.array([0, 1, 3]))
ax2.plot(np.array([2, 4, 1]))
plt.show()
