Как установить размер шага дат по оси x с помощью matplotlib? - PullRequest
1 голос
/ 13 июля 2020

Я использую matplotlib, чтобы нарисовать график между значением и соответствующей ему датой.

import numpy.ma as ma
import pandas as pd
import datetime
import matplotlib.pyplot as plt

levels = pd.read_csv(r'F:levels.csv', usecols=[0,1], parse_dates=[0])
levels.head(3)

Date        Level (m)
1972-04-06  Nan
1972-04-07  309
1972-04-08  311

years = mdates.YearLocator()
years_fmt = mdates.DateFormatter('%Y')

ig,ax = plt.subplots(figsize=(12,7))

ax.plot(levels['Date'],levels['Level (m)'], color ='green')
ax.xaxis.set_major_locator(years)
ax.xaxis.set_major_formatter(years_fmt)

plt.xlabel("Year")
plt.ylabel("Level in meters")
plt.xticks(rotation=45)
plt.legend()

Выходной график выглядит так: введите описание изображения здесь

Ожидаемый результат:

Здесь я хочу, чтобы временной шаг оси x составлял 5 лет. то есть, мне нужны только годы 1970, 1975, 1980, 1985, 1990, 2000 ... годы по оси абсцисс.

1 Ответ

1 голос
/ 13 июля 2020

Просто используйте years = YearLocator(base = 5), как в следующем примере (со случайными данными):

dates = pd.date_range("1960-01-01", "2020-06-30", freq="1d")
dates = sorted(np.random.choice(dates, 100))

years = matplotlib.dates.YearLocator(base = 5)
years_fmt = matplotlib.dates.DateFormatter('%Y')

levels = pd.DataFrame({"Date": dates, 'Level (m)': random.rand(len(dates)) * 1000})

ig,ax = plt.subplots(figsize=(12,7))

ax.plot(levels['Date'],levels['Level (m)'], color ='green')
ax.xaxis.set_major_locator(years)
ax.xaxis.set_major_formatter(years_fmt)

plt.xlabel("Year")
plt.ylabel("Level in meters")
plt.xticks(rotation=45)
plt.legend()

Результат:

введите описание изображения здесь

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