Настройка меток отметок даты из порядкового массива даты - PullRequest
0 голосов
/ 21 июня 2020

У меня есть одномерный массив порядковых номеров даты, извлеченный из модуля datetime. Этот массив содержит порядковые числа как числа с плавающей запятой.

Я построил фигуру, используя pyplot matplotlib как таковой:

import numpy as np
from datetime import datetime as dt
from matplotlib import pyplot as plt

f = plt.plot(newdates, surge)

Массивы newdates и wave 1D имеют одинаковый размер. Что я хочу знать, как настроить даты как даты вместо порядковых номеров даты. Например, newdates [0] = array ([710397.]) Итак, на моем рисунке первая отметка будет 710397, но вместо этого я хочу, чтобы дата была в формате %m%Y. Есть ли способ сделать это напрямую? Я прилагаю свой рисунок для справки.

см. Мой рисунок здесь

1 Ответ

0 голосов
/ 21 июня 2020

если это относится к вашему другому вопросу , я предлагаю вам вообще не использовать порядковый номер. Вы можете просто использовать объекты datetime и соответствующим образом отформатировать график:

from datetime import datetime
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# some dummy data...
data_to_plot = np.array([1,3,2,4]) 

# taken from the linked question:
yr = np.array([1946, 1946, 1946, 1946], dtype=np.int)
mon = np.array([1, 1, 1, 1], dtype=np.int)
day = np.array([1, 1, 1, 1], dtype=np.int)
hr = np.array([1, 2, 3, 4], dtype=np.int)
# cast year/month/day/hour to datetime object:
newdates = [datetime(y,m,d,h) for y, m, d, h in zip(yr, mon, day, hr)]

# examplary plot
fig, ax = plt.subplots(1)
plt.plot(newdates, data_to_plot)
# format the tick labels:
xfmt = mdates.DateFormatter('%Y-%m-%d %H h')
ax.xaxis.set_major_formatter(xfmt)
# make one label every hour:
hours = mdates.HourLocator(interval = 1)
ax.xaxis.set_major_locator(hours)
# rotate the labels:
plt.xticks(rotation=45)
# adjust the canvas so that the labels are visible:
plt.subplots_adjust(top=0.90, bottom=0.22, left=0.10, right=0.9)
plt.show()

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

...