гистограмма matplotlib с отдельными метками для каждой полосы и меткой группы - PullRequest
0 голосов
/ 01 мая 2018

Есть ли способ маркировки отдельных баров с помощью matplotlib? Наилучшим вариантом будет вертикальная маркировка под каждой полосой, чтобы избежать дублирования

Например, красная полоса должна иметь красную метку Х, зеленую - зеленую, а синюю - синюю. Основная группа «A, B, C, D» остается без изменений.

Кроме того, есть ли способ создать легенду о разных цветах?

После моего кода:

fig = plt.figure()
ax = fig.add_subplot(111)

n_groups = 4
bar_width = 0.1
opacity = 0.4
index = np.arange(0, 2*n_groups, 2)

data = [1,2,3,4]
data2 = [5,6,7,8]
chart = plt.bar(index, data, bar_width, color='blue', edgecolor='black')
chart = plt.bar(index+bar_width, data2, bar_width, color='red', edgecolor='black')
chart = plt.bar(index+2*bar_width, data, bar_width, color='green', edgecolor='black')


ax.set_xlabel('y_axis')
ax.set_ylabel('x_axis')
ax.set_title('Title')

plt.xticks(index+bar_width*0.5, ('A', 'B', 'C', 'D'))
plt.legend()
plt.tight_layout()

plt.show()

и вывод:

enter image description here

1 Ответ

0 голосов
/ 01 мая 2018

Легенда не включена, потому что plt не был проинструктирован маркировать участки. Добавьте что-то подобное, чтобы получить метки в легенде "label = 'Plot 1'" на линии сюжета:

chart = plt.bar(index, data, bar_width, color='blue',edgecolor='black', label='Plot 1')
chart = plt.bar(index+bar_width, data2, bar_width, color='red', edgecolor='black', label='Plot 2')
chart = plt.bar(index+2*bar_width, data, bar_width, color='green', edgecolor='black', label='Plot 3')

Это дает вам легенды.

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