Создание меток на основе года в столбце Python - PullRequest
0 голосов
/ 26 ноября 2018

Я создал фрейм данных с датами и двумя значениями, который выглядит следующим образом:

Date          Year        Level        Price
2008-01-01    2008        56           11
2008-01-03    2008        10           12
2008-01-05    2008        52           13
2008-02-01    2008        66           14
2008-05-01    2008        20           10
..
2009-01-01    2009        12           11
2009-02-01    2009        70           11
2009-02-05    2009        56           12
..
2018-01-01    2018        56           10
2018-01-11    2018        10           17
..

Я могу нанести их по цветам на их год, создав столбец по годам с df['Year'] = df['Date'].dt.year но я также хочу иметь меток на каждом Годе в легенде.

Мой код для построения графика по годам выглядит следующим образом:

colors = ['turquoise','orange','red','mediumblue', 'orchid', 'limegreen']

fig = plt.figure(figsize=(15,10))
ax = fig.add_subplot(111)

ax.scatter(df['Price'], df['Level'], s=10, c=df['Year'], marker="o", label=df['Year'], cmap=matplotlib.colors.ListedColormap(colors))
plt.title('Title', fontsize=16)
plt.ylabel('Level', fontsize=14)
plt.xlabel('Price', fontsize=14)
plt.legend(loc='upper left', prop={'size': 12});
plt.show()

Как настроить метки в легенде для отображения года?То, как я это сделал, это просто использование столбца Year, но это, очевидно, просто дает мне такие результаты:

enter image description here

1 Ответ

0 голосов
/ 26 ноября 2018

Когда вы разбрасываете свои очки, вам нужно убедиться, что вы получаете доступ к столбцу в вашем существующем кадре данных.В вашем коде вы пытаетесь получить доступ к столбцу под названием «Год», который не существует.См. Ниже проблему:

ax.scatter(df['Price'], df['Level'], s=10, c=df['Year'], marker="o", label=df['Year'], cmap=matplotlib.colors.ListedColormap(colors)

В этой строке кода, где вы указываете цвет (c) , вы ищете столбец, который не 'не существует.Кроме того, у вас есть та же проблема с вашим ярлыком, который вы передаете. Чтобы решить эту проблему, вам нужно создать столбец, содержащий год:

  1. Извлечь все даты
  2. Возьмите только год от каждой даты
  3. Добавьте это к вашему фрейму данных

Ниже приведен код для реализации этих шагов:

# Create a list of all the dates
dates = df.Date.values

#Create a list of all of the years using list comprehension
years = [x[0] for x in dates.split('-')]

# Add this column to your dataframe
df['Year'] = years

А такжеЯ бы направил вас на этот курс, чтобы узнать больше о графике в Python!https://exlskills.com/learn-en/courses/python-data-modeling-intro-for-machine-learning-python_modeling_for_machine_learning/content

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