Время сюжета без даты в matplotlib или seaborn - PullRequest
0 голосов
/ 12 сентября 2018

Привет, я работаю над категориальными данными.Я хочу видеть поведение устройства в данный день.У меня есть эти данные в качестве моего кадра данных:

Вкл. toronto_time, у меня есть datetime64[D].Ранее я использовал dt.time, чтобы удалить дату.Тем не менее, он представляет проблему типа данных, которая делает его типом object, а не datetime64[D].Повторное преобразование с помощью pd.to_datetime добавит дату к самому себе.

Поэтому я оставил ее с оригиналом:

       toronto_time             description
0      2018-09-08 00:00:50      STATS
1      2018-09-08 00:01:55      STATS
2      2018-09-08 00:02:18      DEV_OL
3      2018-09-08 00:05:24      STATS
4      2018-09-08 00:05:34      STATS
5      2018-09-08 00:06:33      CMD_ERROR

Я попытался нанести на seaborn следующие коды:

import matplotlib.pyplot as plt
import matplotlib.dates as md
import seaborn as sns

plt.style.use('seaborn-colorblind')
plt.figure(figsize=(8,6))
sns.swarmplot('toronto_time', 'description', data=df);
plt.show()

Однако в этот день визуализация сжимается.Я хочу убрать день в xlabel и растянуть их по часам (от 0:00 до 24:00)

Вот что я получил: enter image description here

1 Ответ

0 голосов
/ 12 сентября 2018

Я не уверен, зачем вам минуты и секунды на графике, если ваши отметки указаны только на часе?Но вы можете сделать это, установив форматер для вашей оси.Хотя я бы предложил также изменить пределы осей, если вы ищете тики по часам.

import pandas as pd

import matplotlib.pyplot as plt
import matplotlib.dates as md
import seaborn as sns

df = pd.DataFrame({'toronto_time': ['2018-09-08 00:00:50',
                                    '2018-09-08 01:01:55',
                                    '2018-09-08 02:02:18',
                                    '2018-09-08 03:05:24',
                                    '2018-09-08 04:05:34',
                                    '2018-09-08 05:06:33'], 
                    'description': ['STATS', 'STATS', 'DEV_OL', 'STATS', 'STATS', 'CMD_ERROR']})
df['toronto_time'] = pd.to_datetime(df['toronto_time'], format='%Y-%m-%d %H:%M:%S')

plt.style.use('seaborn-colorblind')
fig, ax = plt.subplots(figsize=(8,6))
sns.swarmplot('toronto_time', 'description', data=df, ax=ax)
ax.set_xlim(df['toronto_time'].min()-pd.Timedelta(1,'h'),
            df['toronto_time'].max()+pd.Timedelta(1,'h'))
ax.xaxis.set_major_formatter(md.DateFormatter('%H:%M:%S'))

plt.show()

enter image description here

Вот хороший пример того, какчтобы использовать локатор для определения того, как расположены тики: http://leancrew.com/all-this/2015/01/labeling-time-series/

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