invert_xaxis выдает ошибку при использовании matplotlib plt.barh - PullRequest
1 голос
/ 21 марта 2019

Я пытаюсь построить 2-х полосные гистограммы.Я хочу инвертировать ось X x1, чтобы 0 было в середине обоих.Я получаю сообщение об ошибке:

AttributeError: у объекта 'BarContainer' нет атрибута 'invert_xaxis'

Вот мой код:

import matplotlib.pyplot as plt
y = ['F','M','H']
x1 = [8, 4, 3]
x2 = [2, 4, 7]
fig, axes = plt.subplots(ncols=2, sharey=True)
axes[0] = plt.barh(y, x1, align='center', color='b')
axes[1] = plt.barh(y, x2, align='center', color='r')
axes[0].invert_xaxis()
plt.show()

1 Ответ

0 голосов
/ 21 марта 2019

Проблема в том, что вы назначаете графики объектам с двумя осями, а не используете их для построения.Правильный способ состоит в том, чтобы напрямую использовать объекты оси для построения barh.Тогда все будет работать как положено.

import matplotlib.pyplot as plt

y = ['F','M','H']
x1 = [8, 4, 3]
x2 = [2, 4, 7]
fig, axes = plt.subplots(ncols=2, sharey=True)
axes[0].barh(y, x1, align='center', color='b') # <---- Changed here
axes[1].barh(y, x2, align='center', color='r') # <---- Changed here
axes[0].invert_xaxis()
plt.show()

enter image description here

...