Гистограмма построения графиков неисправностей. Ячейки разделены, а значения по оси X ограничены. - PullRequest
0 голосов
/ 11 декабря 2018

Я новичок в Python.Я столкнулся с проблемой при построении гистограммы с использованием matplotlib и numpy.Я хочу изучить распределение количества автомобилей в пределах возраста автомобиля.Моя ось X - это age_of_car, а моя ось Y - number_of_car.Ниже приведены мои коды:

age_of_car = np.array(['0-<1', '1-<2', '2-<3', '3-<4', '4-<5', 
      '5-<6', '6-<7', '7-<8', '8-<9', '9-<10','10-<11', 
      '11<12', '12-<13','13-<14', '14-<15', '15-<16',      
      '16-<17', '17-<18','18-<19', '19-<20', '20->'])


number_of_car = np.array(['91614', '87142', '57335', '28392', 
     '21269', '26551', '27412', '41142', '68076', '88583', 
     '28487', '28439', '8728', '1557', '458', '179',   
     '423', '444', '421', '410', '5194'])

num_bins = 20
plt.hist([age,number],num_bins)
plt.show()

Вот скриншот моей ошибки.Контейнеры расположены далеко друг от друга, а значения по оси X тесно связаны.Это не то, что я хочу enter image description here

1 Ответ

0 голосов
/ 12 декабря 2018

Во-первых, для правильного отображения ваших данных вам нужно преобразовать значения в number_of_car в целые числа.Для этого вы можете использовать опцию dtype=int при создании массива.

Во-вторых, ваша гистограмма уже готова, поэтому вы должны использовать график bar:

from matplotlib import pyplot as plt
import numpy as np

age_of_car = np.array(['0-<1', '1-<2', '2-<3', '3-<4', '4-<5', 
      '5-<6', '6-<7', '7-<8', '8-<9', '9-<10','10-<11', 
      '11<12', '12-<13','13-<14', '14-<15', '15-<16',      
      '16-<17', '17-<18','18-<19', '19-<20', '20->'])


number_of_car = np.array(['91614', '87142', '57335', '28392', 
     '21269', '26551', '27412', '41142', '68076', '88583', 
     '28487', '28439', '8728', '1557', '458', '179',   
     '423', '444', '421', '410', '5194'], dtype=int)

fig, ax = plt.subplots()
ax.bar(age_of_car, number_of_car)
fig.tight_layout()
plt.show()

Теперь, чтобы сделать xticks читабельными, у вас есть как минимум два решения:

  1. Увеличивайте ширину фигуры, пока не останется достаточно места для всех штрихов.Для этого вы можете использовать опцию figsize при создании фигуры:

    fig, ax = plt.subplots(figsize=(14, 4))
    
  2. Вращать метки с помощью ax.tick_params('x', rotation=60)

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