我试图在matplotlib中绘制一系列日落时间,但是我收到以下错误: “TypeError:Empty'DataFrame':没有要绘制的数字数据”
我查看了几个要转换的选项,例如: plt.dates.date2num但这并没有真正满足我的需求,因为我想以可读的格式绘制它,即时间。我发现的所有例子都在x轴上有时间,但在y轴上没有它们。
有没有办法完成这项任务?有没有人有想法?
我期待你的回复。 最好的问候,Arne
3 Jan 2013 16:44:00
4 Jan 2013 16:45:00
5 Jan 2013 16:46:00
6 Jan 2013 16:47:00
7 Jan 2013 16:48:00
8 Jan 2013 16:49:00
9 Jan 2013 16:51:00
10 Jan 2013 16:52:00
11 Jan 2013 16:53:00
12 Jan 2013 16:55:00
13 Jan 2013 16:56:00
14 Jan 2013 16:57:00
答案 0 :(得分:3)
如果您试图在x轴上绘制一些未指定的数据,并在y轴上绘制日期/时间,或者如果您尝试在x轴上绘制天数,那么您的问题就不太清楚在y轴上。
但是,从你的问题来看,我会假设它是后者。
听起来你可能正在使用pandas
,但就目前而言,我只假设你有两个字符串序列:一个是日,另一个是时间序列。
要将给定的轴视为日期,只需拨打ax.xaxis_date()
或ax.yaxis_date()
即可。在这种情况下,两者实际上都是日期。 (时间将在今天作为一天,但你不会直接看到这一点。)
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
date = ['3 Jan 2013', '4 Jan 2013', '5 Jan 2013', '6 Jan 2013', '7 Jan 2013',
'8 Jan 2013', '9 Jan 2013', '10 Jan 2013', '11 Jan 2013', '12 Jan 2013',
'13 Jan 2013', '14 Jan 2013']
time = ['16:44:00', '16:45:00', '16:46:00', '16:47:00', '16:48:00', '16:49:00',
'16:51:00', '16:52:00', '16:53:00', '16:55:00', '16:56:00', '16:57:00']
# Convert to matplotlib's internal date format.
x = mdates.datestr2num(date)
y = mdates.datestr2num(time)
fig, ax = plt.subplots()
ax.plot(x, y, 'ro-')
ax.yaxis_date()
ax.xaxis_date()
# Optional. Just rotates x-ticklabels in this case.
fig.autofmt_xdate()
plt.show()