Форматирование оси дата-время в matplotlib - PullRequest
0 голосов
/ 04 октября 2019

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

Это оригинальный график. enter image description here Используя этот код:

csv = 'Hydro.csv'

df = pd.read_csv(csv, header=None, names=['time', 'mwp', 'ppld', 'mwd', 'shts', 'tides', 'tan B', 'Lo', 'E', 'wind speed', 'wind gust', 'wind direction'])
fig = plt.figure(tight_layout=False)
gs = gridspec.GridSpec(5, 1)

ax1 = fig.add_subplot(gs[0, :])
ax1.plot(df['time'], df['ppld'], label = 'Peak Wave Period', linewidth = 1, color ='k')
ax1.set_ylabel ('Tp[s]', size = 10)

ax1.grid(True, ls='--')
plt.setp(ax1.get_xticklabels(), visible=True, rotation = 90)

Когда я начинаю корректировать тики, график не отображается должным образом: enter image description here

csv = 'Hydro.csv'

df = pd.read_csv(csv, header=None, names=['time', 'mwp', 'ppld', 'mwd', 'shts', 'tides', 'tan B', 'Lo', 'E', 'wind speed', 'wind gust', 'wind direction'])
fig = plt.figure(tight_layout=False)
gs = gridspec.GridSpec(5, 1)

ax1 = fig.add_subplot(gs[0, :])
ax1.plot(df['time'], df['ppld'], label = 'Peak Wave Period', linewidth = 1, color ='k')
ax1.set_ylabel ('Tp[s]', size = 10)
ax1.grid(True, ls='--')

ax1.xaxis_date()
ax1.set_xticks(df['time'])
ax1.xaxis.set_major_formatter(mdates.DateFormatter("%M:%D"))
ax1.xaxis.set_minor_formatter(mdates.DateFormatter("%H"))
_=plt.xticks(rotation=45)  


plt.show()

Я хочу показать 6-часовые интервалы и день / месяц.

1 Ответ

0 голосов
/ 07 октября 2019

Как и предлагалось в комментариях, мне сначала пришлось конвертировать в даты.

csv = 'Hydro.csv'

df = pd.read_csv(csv, header=None, names=['time', 'mwp', 'ppld', 'mwd', 'shts', 'tides', 'tan B', 'Lo', 'E', 'wind speed', 'wind gust', 'wind direction'])
xp = [datetime.strptime(d, "%d/%m/%Y %H:%M:%S") for d in df['time']]

xs = mdates.date2num(xp)
date = mdates.DateFormatter ("%d/%m/%Y\n%H:%M:%S")

fig = plt.figure(tight_layout=False)
gs = gridspec.GridSpec(5, 1)

ax1 = fig.add_subplot(gs[0, :])
ax1.xaxis.set_major_formatter(date)
ax1.xaxis.set_ticks_position('top')
ax1.set_ylabel ('$T_p[s]$', size = 10)
ax1.grid(True, ls='--')
ax1.plot(xs, df['ppld'], linewidth = 1, color = 'k')

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