[英]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.