Я хочу отобразить номер каждого бара - PullRequest
0 голосов
/ 30 марта 2020
#plt.figure(figsize=(15,5))

bins=[0,10,20,30,40,50]

ax=plt.title('SEM-2 adv-c Marks wise clasification', fontdict={'fontname': 'Sans Serif', 'fontsize': 15})
ax=plt.xlabel('Marks',fontdict={'fontname': 'Sans Serif', 'fontsize': 15})
ax=plt.ylabel('Total Students',fontdict={'fontname': 'Sans Serif', 'fontsize': 15})

ax=plt.hist(sem2.ADV_C,bins, color='r', density=False, label='No of Student')


plt.legend()
plt.show()

Я хочу отобразить номер каждого бара, чтобы понять, что такое номер классификации

1 Ответ

0 голосов
/ 30 марта 2020

Усреднение левой и правой границ каждого бина дает позиции тиков в центре каждого бара. Там может быть размещена метка с левой и правой границами.

Эту же X-позицию можно также использовать для размещения текста, например, с номером в каждой ячейке.

from matplotlib import pyplot as plt
import numpy as np

bins = np.array([0, 10, 20, 30, 40, 50])
# create sum dummy data
sem2_ADV_C = (np.random.beta(4, 3, 500) * 50).astype(np.int)

plt.title('SEM-2 adv-c Marks wise clasification', fontdict={'fontname': 'Sans Serif', 'fontsize': 15})
plt.xlabel('Marks', fontdict={'fontname': 'Sans Serif', 'fontsize': 15})
plt.ylabel('Total Students', fontdict={'fontname': 'Sans Serif', 'fontsize': 15})

plt.hist(sem2_ADV_C, bins, color='crimson', density=False, label='No of Student', edgecolor='black')
plt.xticks((bins[:-1] + bins[1:]) / 2, [f'{b0}–{b1}' for b0, b1 in zip(bins[:-1], bins[1:])])
values, _, _ = plt.hist(sem2_ADV_C, bins, color='crimson', density=False, label='No of Student', edgecolor='black')
plt.xticks((bins[:-1] + bins[1:]) / 2, [f'{b0}–{b1}' for b0, b1 in zip(bins[:-1], bins[1:])])
for i, val in enumerate(values):
    plt.text((bins[i] + bins[i+1]) / 2, val, int(val), ha='center', va='bottom')

plt.show()

resulting plot

...