Как удалить дополнительные значения, отображаемые на оси X, которые не являются частью фрейма данных для графиков Matplotlib? - PullRequest
0 голосов
/ 26 мая 2020

У меня начальные дни обучения python (2 месяца без опыта программирования)

У меня есть следующий фрейм данных -

|    | Vehicle class | Year | Base_Tot_Sec_Vol | Base_OFW_Volume |
|---:|--------------:|-----:|-----------------:|-----------------|
|  0 |            2W | 2018 |     7.107110e+07 |    0.000000e+00 |
|  1 |            2W | 2020 |     7.218810e+07 |    0.000000e+00 |
|  2 |            2W | 2030 |     7.524556e+07 |    0.000000e+00 |
|  3 |            BC | 2018 |     6.935553e+07 |    1.522439e+07 |
|  4 |            BC | 2020 |     5.570438e+07 |    1.222779e+07 |
|  5 |            BC | 2030 |     3.955456e+07 |    8.682708e+06 |
|  6 |            CV | 2018 |     4.480700e+08 |    9.835683e+07 |
|  7 |            CV | 2020 |     3.597294e+08 |    7.896498e+07 |
|  8 |            CV | 2030 |     2.820582e+08 |    6.191522e+07 |
|  9 |            PV | 2018 |     4.208246e+08 |    0.000000e+00 |
| 10 |            PV | 2020 |     4.315216e+08 |    0.000000e+00 |
| 11 |            PV | 2030 |     3.045124e+08 |    0.000000e+00 |

Я хотел построить график график с годом как ось x и ось y как Base_Tot_Sec_Vol.

Когда я запускаю свой код, как показано ниже -

import pandas as pd 
import matplotlib .pyplot as plt 
fig,axes = plt.subplots()
width = 0.35

axes.bar(df['Year'].unique(),df[df['Vehicle class'] == '2W']['Base_Tot_Sec_Vol'], width,label = '2W')

axes.legend(loc=0)

plt.show()

Результат показан ниже -

enter image description here

Я не могу понять, почему столбец «Год», который содержит только 2018, 2020 и 2030 годы, показывает дополнительные значения в диаграмме. Я попытался изменить столбец «Год» с dtype = int на dtype = category с помощью df ['Year']. Astype ('category'), но это не дало никаких изменений.

Пожалуйста, помогите.

Заранее спасибо.

1 Ответ

1 голос
/ 26 мая 2020

Попробуйте использовать вместо string:

df['Year'] = df['Year'].astype(str)

df[df['Vehicle class'] == '2W'].plot(x='Year', y='Base_Tot_Sec_Vol', kind='bar')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...