Легенда Matplotlib в For Loop - PullRequest
       6

Легенда Matplotlib в For Loop

0 голосов
/ 20 апреля 2020

Я пытаюсь построить несколько линий с соответствующей легендой:

regions = ['Wales', 'Scotland', 'London', 'East of England', 'East Midlands',
       'Yorkshire and The Humber', 'South East', 'South West',
       'West Midlands', 'North West', 'North East']

plt.figure(figsize = (10,8))
plt.title('Number of Vehicles per Region')
plt.xlabel('Year')
plt.ylabel('Number of Vehicles')
plt.legend()

for i in regions:
    region = raw_miles_df.loc[i].sum(axis = 1).reset_index()

    region = region.rename(columns = {'count_date':'Year', 0: 'vehicles'})

    region['Year'] = region['Year'].apply(lambda x: x.year)
    region = region.groupby(['Year']).agg(vehicles = ('vehicles', lambda x: x.mean().round(2)))

    plt.plot(region)
    plt.legend(i)

у меня метод не работает:

enter image description here

1 Ответ

0 голосов
/ 20 апреля 2020

Вам нужно переместить plt.legend из l oop и сделать его plt.legend(regions). Как можно видеть из легенды, она рассматривает строку «Северо-восток», которая является последним элементом в regions, как итерацию, из которой можно рисовать категории.

Но вы можете сделать это проще на себя с помощью seaborn

import seaborn as sns
# aggregate your data outside of the loop
# then call lineplot
aggdata = df.groupby(...)
sns.lineplot(x=x_column, y=y_column, hue=category_column, data=aggdata)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...