Значения над столбцами в диаграмме в Matplotlib - PullRequest
1 голос
/ 14 февраля 2020

У меня есть следующий код для диаграммы в matplotlib

import matplotlib.pyplot as plt; plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt

objects = ('2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018')
y_pos = np.arange(len(objects))
performance = [8.5,9.1,9.7, 10.6, 11.4, 12.6, 13.2, 13.4, 14.7, 15.4, 16.2, 16.7, 17.0, 17.5, 18.0]

fig, ax = plt.subplots(figsize=(18,5))



plt.bar(y_pos, performance, align='center', alpha=0.5, color="green")
plt.xticks(y_pos, objects)
plt.ylim(0, 20)
plt.ylabel('Share in %',  fontsize = 16)
plt.xlim(-0.6, len(objects) - 0.4)
ax.tick_params(axis='both', which='major', labelsize=14)
plt.savefig('Share_Of_Renewables_Europe.png', edgecolor='black', dpi=400, bbox_inches='tight',
           figsize=(18,5) )

for i, performance in enumerate(performance):
    ax.text(performance - 0, i + .25, str(performance), color='black', fontweight='bold')

plt.show()

Я хотел бы иметь значения выше столбцов. Я использую предложение (для l oop в конце моего кода) из Как отобразить значение бара на каждом баре с помощью pyplot.barh ()? , но оно не выглядит правильным. Здесь вы видите вывод: enter image description here

Может кто-нибудь помочь мне в этом?

Ответы [ 4 ]

3 голосов
/ 14 февраля 2020

Вы использовали неправильный порядок переменных в ax.text. Используйте следующее. Кроме того, не используйте переменную performance дважды. Я использовал perf сейчас

for i, perf in enumerate(performance):
    ax.text(i, perf + .25, str(perf), color='black', 
            ha='center', fontweight='bold')

enter image description here

1 голос
/ 14 февраля 2020

i - индекс позиции x, performance - высота бара (позиция y). Первые два параметра plt.text - это x и y позиции текста.

for i, performance in enumerate(performance):
    ax.text(i, performance + .25, str(performance), color='black', fontweight='bold')
0 голосов
/ 14 февраля 2020

Попробуйте это:

xlocs = ax.get_xticks()

for i, performance in enumerate(performance):
    ax.text(xlocs[i] - .25, performance + .25, str(performance), color='black', fontweight='bold')
0 голосов
/ 14 февраля 2020

В вашем вызове ax.text замените:

performance - 0

на:

i - 0.15
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...