您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 在matplotlib中使用datetime堆积直方图

5b51 2022/1/14 8:22:02 python 字数 5481 阅读 531 来源 www.jb51.cc/python

我正在尝试使用datetime对象创建堆叠直方图,但是我收到以下错误: TypeError: unorderable types: datetime.datetime() < float() 当我将对象转换为时间戳或使用一个数据范围(无堆叠)时,代码可以正常工作.import datetime import matplotlib.pyplot as p

概述

我正在尝试使用datetime对象创建堆叠直方图,但是我收到以下错误

 TypeError: unorderable types: datetime.datetime() < float()

当我将对象转换为时间戳或使用一个数据范围(无堆叠)时,代码可以正常工作.

import datetime
import matplotlib.pyplot as plt

data = [[datetime.datetime(2015,12,24,21,13,45),datetime.datetime(2015,30,23,37,8),19,43,18),16,14,12),11,32,29,6,25),28,22,54,49),18,41,50),25,42),3,1,34),27,10,20),38),26,20,34,14),58,47),40),17,15,44,58),9),33,7),15),46,13),38,24),59),20)],[datetime.datetime(2015,59,53),41),9,17)],32)],24)]]

fig,histograms = plt.subplots(5,sharex=True,squeeze=False)
h = histograms[1][0]
h.hist(data,stacked=True)

这是没有堆叠的代码

import datetime
import matplotlib.pyplot as plt

data = [datetime.datetime(2015,17),32),24)]

fig,stacked=True)

注意:
根据答案,这被认为是一个错误.对于未来的访问者,我已经提交了错误报告https://github.com/matplotlib/matplotlib/issues/5898,以防您想要跟踪进度

认值是由this line of code引发的.正如您所看到的那样,只有在未指定bin边缘并且尝试在时间序列中找到最小值时才会调用它(将其与np.inf进行比较并采用最小值).您可以通过在调用中指定bin边缘来解决此问题,但随后会导致进一步失败,因为在引擎盖下调用的numpy直方图函数会查找小于零的宽度区间.

一个datetime.datetime对象列表传递给pyplot.hist()函数时,“引擎盖下”,数据实际上转换为UNIX纪元时间戳(你可以从x轴的标签中猜出这一点).当输入是datetime.datetime对象列表的列表时,不会执行此操作.

在那个阶段,我认为我们必须把它称为bug,你必须使用你已经发现的时间戳 – 例如h.hist(对于数据中的s,[[t.timestamp()for t in s],stacked = True).即使直方图的实际数据是时间戳,您仍然可以以日期格式给出bin标签,因此这应该对用户透明.

我将看看是否可以找到更好的解决方法/修复,并可能在matplotlib github上引发问题.

有效的代码(matplotlib 1.5.1,Python 3),尽管有点混乱

import datetime
import matplotlib.pyplot as plt

data = [[datetime.datetime(2015,squeeze=False)
h = histograms[1][0]

h.hist([[t.timestamp() for t in l] for l in data],stacked=True)

locs,labels = plt.xticks()
plt.xticks(locs,[datetime.datetime.fromtimestamp(t) for t in locs],rotation='vertical')
plt.gcf().subplots_adjust(bottom=0.4)
fig.set_size_inches(4,15)

plt.show()

产生

Stacked bar with date labels

总结

以上是编程之家为你收集整理的python – 在matplotlib中使用datetime堆积直方图全部内容,希望文章能够帮你解决python – 在matplotlib中使用datetime堆积直方图所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶