我希望使用Matplotlib / pylab进行绘图,并在x-axis
上显示日期和时间。为此,我正在使用datetime模块。
这是一个完全符合要求的工作代码 -
import datetime
from pylab import *
figure()
t2=[]
t2.append(datetime.datetime(1970,1,1))
t2.append(datetime.datetime(2000,1,1))
xend= datetime.datetime.now()
yy=['0', '1']
plot(t2, yy)
print "lim is", xend
xlim(datetime.datetime(1980,1,1), xend)
但是,当我使用scatter(t2,yy)
命令而不是plot (t2,yy)
时,它会出错:
AttributeError:'numpy.string_'对象没有属性'toordinal'
为什么会发生这种情况?如何在情节中显示散点?
之前有人问过类似的问题 - AttributeError: 'time.struct_time' object has no attribute 'toordinal' 但解决方案没有帮助。
答案 0 :(得分:2)
以下是我将如何执行此操作的扩展示例:
import datetime
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
t2=[
datetime.datetime(1970,1,1),
datetime.datetime(2000,1,1)
]
xend = datetime.datetime.now()
yy= [0, 1]
ax.plot(t2, yy, linestyle='none', marker='s',
markerfacecolor='cornflowerblue',
markeredgecolor='black',
markersize=7,
label='my scatter plot')
print("lim is {0}".format(xend))
ax.set_xlim(left=datetime.datetime(1960,1,1), right=xend)
ax.set_ylim(bottom=-1, top=2)
ax.set_xlabel('Date')
ax.set_ylabel('Value')
ax.legend(loc='upper left')
答案 1 :(得分:0)
如果您对int
使用float
或yy
类型,则scatter()
不会出现此错误:
yy = [0, 1]