Планки погрешностей в matplotlib отображаются поверх других кривых

У меня есть график, на котором некоторые данные представлены точечной диаграммой с планками погрешностей, и я хочу подогнать к ней кривую. Однако независимо от того, где в коде я рисую кривую, планки погрешностей плавают поверх нее. Я хочу, чтобы подогнанные кривые отображались перед полосами погрешностей, потому что иначе я их не вижу.

Вот простой пример проблемы:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

x = np.arange(1,10)
r = np.random.random(x.size)

fig1, ax = plt.subplots()
ln1 = ax.plot(2*x,x,'g')
ax3 = ax.twinx()
ln2 = ax3.errorbar(x,r,yerr=x,color='red',fmt='o')
ln2fit = ax3.plot(x,r-0.3,'b')

и сюжет, который он производит:

введите здесь описание изображения

Есть две оси, потому что я сравниваю два набора данных.

Как видите, даже несмотря на то, что я начертил кривую выше планок погрешностей, планки погрешностей и точки по-прежнему скрывают кривую. Что я могу сделать, чтобы отключить это?


person Petra    schedule 10.02.2021    source источник


Ответы (1)


Вы можете указать zorder:

ln2 = ax3.errorbar(x,r,yerr=x,color='red',fmt='o',zorder=1)

введите здесь описание изображения

Если вы также хотите, чтобы зеленая линия была на переднем плане, вам нужно переместить ее оси ax в более высокий порядок (по умолчанию 0) и скрыть патч осей ax, чтобы лежащий в основе ax3 оставался видимым:

ax.set_zorder(1)
ax.patch.set_visible(False)

введите здесь описание изображения

person Stef    schedule 10.02.2021
comment
У меня есть дополнительный вопрос, если вы знаете ответ - в моей легенде метка полосы ошибок постоянно появляется под меткой кривой, даже когда я добавляю параметр zorder. Знаете, как я это исправлю? Я бы хотел, чтобы порядок был данными с планками погрешностей, а затем кривой, как это было бы с двумя обычными кривыми, построенными в этом порядке. - person Petra; 10.02.2021
comment
Боюсь, мне это не совсем ясно. Думаю, лучше задать отдельный вопрос, показать, что есть и как-то попытаться показать желаемый результат. - person Stef; 10.02.2021
comment
Я задал вопрос здесь, если у вас есть время взглянуть: stackoverflow.com/questions/66141142/ - person Petra; 10.02.2021