как построить 23-часовой 25-часовой ряд в python - PullRequest
1 голос
/ 10 марта 2020

У меня есть такая таблица.

enter image description here

Я хочу построить x = день, y = час (график xy) на одном графике.

поэтому я устанавливаю все дни в определенный фиксированный день (2017-03-01), кроме часовых и минутных параметров для графика.

и после графика графика я просто изменяю метку x на исходные данные времени

соответственно на этих шагах я получаю график, приведенный ниже.

enter image description here

, но проблема возникает в 23 ~ 00 часов данных

enter image description here

, чтобы ясно видеть на графике

Если промежуток минимума и максимума превышает 23 часа,

I хотите найти все 00:00 временного интервала в кадре данных и добавить в 00:00 к 24 часам

В автоматическом режиме существует разница в часах с 23:00 до 24:00.

Но разница в приведенном ниже графике, которую я прикрепил с 23:00 до 00:00, составляет 23 часа.

Не могли бы вы дать мне знать, как построить данные в соответствии с моей просьбой?

Я также прилагаю мой код тоже

plt.clf()
#####read files###########################
df = pd.read_excel('files',parse_dates=[0])
#####to make xlabel###########################
x = range(len(df))
xla =df['UTC'].dt.strftime('%Y-%m-%d')
#####set the days same date ###########################
y = df['UTC'].apply(lambda x: x.replace(year=2020, month=3, day=1))
ax = plt.subplot()
ax.plot(x, y ,marker='s', color='k')

ax.yaxis.set_major_locator(md.MinuteLocator(interval=5))
ax.yaxis.set_major_formatter(mdates.DateFormatter("%H:%M"))
plt.xticks(x,xla)
plt.xticks(rotation=90)
ax.xaxis.grid(True)
ax.yaxis.grid(True)
plt.title('time_of_waypoint', fontsize=10)
plt.xlabel('day')
plt.ylabel('time')

1 Ответ

0 голосов
/ 10 марта 2020

Попробуйте это:

import pandas as pd
import matplotlib.pyplot as plt
from io import StringIO

data = StringIO("""datetime
2018-04-03 00:00:00
2018-04-04 23:56:00
2018-04-05 23:57:00
2018-04-06 23:58:00
2018-04-07 00:02:00
2018-04-08 23:59:00
2018-04-09 23:57:00
2018-04-10 23:52:00
""")

df = pd.read_csv(data, engine='python')
df['datetime']= pd.to_datetime(df['datetime'])
x = df['datetime'].apply(lambda x:x.strftime('%m-%d'))
y = df['datetime'].apply(lambda x:x.strftime('%H:%m'))

plt.plot(x,y, 'o')
plt.plot(x,y, '-')
plt.xlabel('month-day')
plt.ylabel('hour:minute')
plt.show()

enter image description here

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