Добавление значения бара к графику подстроки при наличии специальной отметки - PullRequest
0 голосов
/ 30 апреля 2018

Мне нужно добавить значение bar справа от barh () или верхней части plt.bar (). Тем не менее, у меня есть пользовательские xTicks. Как мне это сделать?

Таким образом, у меня есть 4 подзаговора, которые настроены для их отметок x или y, следующий код повторяется хорошо, но позиция текста неверна из-за xticks.

import matplotlib.pyplot as plt
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
[subax.yaxis.set(ticks=range(1,4),ticklabels=['a','b','c']) for ax in axes for subax in ax]
# Data
data=list([([8, 9, 8]), ([23, 26, 2]), ([33,37,33]), ([40, 45, 40])])
barplot=[subax.barh([1,2,3],list(data.pop())) for ax in axes for subax in ax]

for ax in axes:
    for subax in ax:
        count=0
        [[subax.text(rect.get_width()+2,3, str(rect.get_width()))] for rect in barplot[count]]
    count+=1
plt.show()

Спасибо.

РЕДАКТИРОВАТЬ: Когда я пытаюсь сохранить его как изображение, размещение текста становится худшим

1 Ответ

0 голосов
/ 30 апреля 2018

Координата y текста должна совпадать с координатой y панели, которую он должен пометить. Таким образом, вы не можете поставить 3 для всех текстов, но вместо этого можете, например, используйте переменную цикла, чтобы получить эту координату.

Я немного почистил ваш код, потому что его было довольно сложно читать.

import matplotlib.pyplot as plt
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)

data=list([([8, 9, 8]), ([23, 26, 2]), ([33,37,33]), ([40, 45, 40])])
barplot=[ax.barh(['a','b','c'],list(data.pop())) for ax in axes.flat]

for i, ax in enumerate(axes.flat):
    for j, rect in enumerate(barplot[i]):
        ax.text(rect.get_width(), j, str(rect.get_width()))
plt.show()

enter image description here

...