matplotlib基于小时分钟的直方图

fcg9iug3  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(409)
jupyter notebook 5.2.2
Python 3.6.4
pandas 0.22.0
matplotlib 2.2.2

嗨,我正试图在一个jupyter笔记本中呈现和格式化一个直方图,这个直方图基于使用hivesql从hadoop存储中检索到的小时和分钟日志数据。
我的演讲有问题。我想能够设置轴从00:00到23:59与箱子开始在零和结束在下一分钟。我想要半小时的刻度线。我就是不知道怎么做。
下面是两年的数据,共有1440行,每分钟的事件总数。

%%sql -o jondat
select eventtime, count(1) as cnt
from logs.eventlogs
group by eventtime

数据以字符串形式存储,但以小时和分钟为单位 hh:mm ,但它似乎是自动转换为sysdate加上时间戳的笔记本,我一直在玩这种格式的数据和其他。
如果我去掉结肠

df.dtypes

eventtime int64
cnt int64

如果我用管子之类的假填料

eventtime object
cnt int64

如果我把结肠和结肠放在一起

eventtime datetime64
cnt int64

这是我目前正在使用的。

...
2018-11-22 00:27:00 32140
2018-11-22 00:28:00 32119
2018-11-22 00:29:00 31726
...
2018-11-22 23:30:00 47989
2018-11-22 23:31:00 40019
2018-11-22 23:32:00 40962
...

然后我可以绘制数据

%%local

import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import datetime as dt
import mateplotlib.dates as md

xtformat = md.DateFormatter('%H:%M')

plt.rcParams['figure.figsize'] = [15,10]
df = pd.DataFrame(jondat)

x=df['eventtime']
b=144
y=df['cnt']

fig, ax=plt.subplots()

ax.xaxis_date()

ax.hist(x,b,weights=y)
ax.xaxis.set_major_formatter(xtformat)

plt.show(ax)

目前我的轴开始之前和之后的数据和箱子是集中在一分钟,这是一个更痛苦的,如果我改变了箱子的数量。我看不到哪里可以停止从字符串到datetime的自动转换,我也不确定是否需要这样才能得到我想要的结果。
这是关于格式化我的事件时间和设置轴,还是我可以简单地设置轴而不考虑数据类型。理想情况下,标记的蜱虫应该是用户友好的
这是我得到的144个箱子的图表。由于一些日志记录是手动的,1440箱图表是“毛茸茸的”,因为手动记录的趋势是四舍五入。我正在试验的一件事是不同的垃圾箱计数。

sqyvllje

sqyvllje1#

多亏了https://stackoverflow.com/users/4124317/importanceofbeingernest 他给了我足够的线索来找到答案。

%%local

import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import datetime as dt
import mateplotlib.dates as md

plt.rcParams['figure.figsize'] = [15,10]
df = pd.DataFrame(jondat)

xtformat = md.DateFormatter('%H:%M')
xtinter = md.MinuteLocator(byminute=[0], interval=1)
xtmin = md.MinuteLocator(byminute=[30], interval=1)

x=df['eventtime']
b=144
y=df['cnt']

fig, ax=plt.subplots()

ld=min(df['eventtime'])
hd=max(df['eventtime'])

ax.xaxis_date()

ax.hist(x,b,weights=y)
ax.xaxis.set_major_formatter(xtformat)
ax.xaxis.set_major_locator(xtinter)
ax.xaxis.set_minor_locator(stmin)
ax.set_xlim([ld,hd])

plt.show(ax);

这使我可以整洁地绘制图表,并使用bin设置来查看它对曲线的影响程度,既可以显示在 Jmeter 板上,也可以帮助考虑将曲线分类为时间段,以便按时间分析偶数类型。

相关问题