我有一个HH:MM:SS格式的时间戳列表,想用datetime.time来绘制一些值。看起来python不喜欢我这样做。有人能帮忙吗?
import datetime
import matplotlib.pyplot as plt
# random data
x = [datetime.time(12,10,10), datetime.time(12, 11, 10)]
y = [1,5]
# plot
plt.plot(x,y)
plt.show()
*TypeError: float() argument must be a string or a number*
字符串
3条答案
按热度按时间mkh04yzy1#
它在Python 3.5.3和Matplotlib 2.1.0中仍然有效。
解决方法是使用
datetime.datetime
对象而不是datetime.time
对象:字符串
的数据
按最终日期部分不应可见。否则,您可以始终使用DateFormatter:
型
vpfxa7rd2#
好吧,一个两步的故事,让他们PLOT真的很好
x1c 0d1x的数据
第一步:将数据整理成合适的格式
从
datetime
到matplotlib
约定兼容**float
**的日期/时间像往常一样,魔鬼隐藏在细节中。
matplotlib
日期 * 几乎 * 相等,但不相等:字符串
所以,强烈建议重新使用自己的“自己的”工具:
型
第二步:管理轴标签和格式以及缩放(最小/最大)作为下一个问题
matplotlib
也为你带来了这部分的武器。检查code in this answer for all details
u91tlkcl3#
我有一个Pandas DataFrame
df
,包含datetime
列df.dtm
和数据列df.x
,跨越几天,但我想使用matplotlib.pyplot
作为时间的函数绘制它们,* 不是 * 日期和时间(datetime,datetimeindex)。即,我希望所有数据点都被折叠到图中相同的24小时范围内。我可以绘制df.x
与df.dtm
没有问题,但是我刚刚花了两个小时试图弄清楚如何将df.dtm
转换为df.time
(包含一天中的时间而没有日期),然后绘制它。(对我来说)简单的解决方案不起作用:字符串
这确实有效:
型
请注意,区别在于前两行。第一行允许Pandas和Matplotlib之间更好的协作,第二行似乎是多余的(甚至是错误的),但这对我来说并不重要,因为我使用的是单个时区,并且没有绘制。