繁体   English   中英

在matplotlib或seaborn中绘制没有日期的时间

[英]Plot time without date in matplotlib or seaborn

嗨,我正在处理分类数据。 我想查看特定日期的设备行为。 我将这些作为数据框:

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)进行拉伸

这就是我得到的: 在此处输入图片说明

如果您的滴答声只有一个小时,我不确定为什么要在图表上显示分钟和秒? 但是您可以通过为轴设置格式器来实现。 尽管我建议您按小时查找刻度,也建议更改轴限制。

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()

在此处输入图片说明

这是一个很好的示例,展示了如何使用定位器来定义刻度线的间距: http : //leancrew.com/all-this/2015/01/labeling-time-series/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM