Дата по оси X (сюжет Matplotlib) - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь построить график на основе данных из Yahoo на Google Finance. Только начинаю изучать визуализацию данных на Pandas, Matplotlib на Jupyter Notebook.

google['Date'] = pd.to_datetime(google['Date'])
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(google['Date'], google['Rolling Mean'], color = (0,0,0), linewidth = 4, alpha = .9, label = 'Smoothed');
ax.plot(google['Date'], google['Open'], color = (1,0,0), label = 'Original');
ax.set_title('Original and Smoothed Price')
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.legend(loc='lower right')

Преобразовал дату в pd.datetime, но график показал год-месяц. Как сделать так, чтобы на оси X отображался только год, чтобы он не выглядел так людно

Я прикрепил изображение ниже.

Мой график DataFrame

1 Ответ

0 голосов
/ 26 февраля 2020

Вы можете использовать matplotlib.dates:

import matplotlib.dates as mdates

years = mdates.YearLocator()   # every year
months = mdates.MonthLocator()  # every month
years_fmt = mdates.DateFormatter('%Y')

fig = plt.figure(figsize=(16,4))
ax = fig.add_subplot(111)

ax.plot(google['Date'], google['Rolling Mean'], color = (0,0,0), linewidth = 4, alpha = .9, label = 'Smoothed');
ax.plot(google['Date'], google['Open'], color = (1,0,0), label = 'Original');
ax.set_title('Original and Smoothed Price')
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.legend(loc='lower right')

## Format the X-axis
ax.xaxis.set_major_locator(years)
ax.xaxis.set_major_formatter(years_fmt)
ax.xaxis.set_minor_locator(months)

Чтобы получить то, что вы хотите (не обращайте внимания на данные, я случайно сгенерировал некоторые для построения графика):

enter image description here

Ссылка: https://matplotlib.org/3.1.1/gallery/text_labels_and_annotations/date.html

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