2014-06-19 16 views
6

Tôi muốn âm mưu sử dụng Matplotlib/pylab và hiển thị ngày và thời gian trên x-axis. Đối với điều này, tôi đang sử dụng mô-đun datetime.Tại sao tôi nhận được một AttributeError khi tôi sử dụng scatter() nhưng không phải khi tôi sử dụng âm mưu()

Đây là một mã số lao động thực hiện chính xác những gì là required-

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) 

Tuy nhiên, khi tôi sử dụng lệnh scatter(t2,yy) thay vì plot (t2,yy), nó mang lại một lỗi:

AttributeError: 'numpy.string_' object has no attribute 'toordinal'

Tại sao điều này xảy ra và làm thế nào tôi có thể hiển thị một phân tán cùng với cốt truyện?

Câu hỏi tương tự đã được hỏi trước là- AttributeError: 'time.struct_time' object has no attribute 'toordinal' nhưng các giải pháp không giúp ích.

+0

bạn muốn đạt được điều gì với 'phân tán' mà' cốt truyện' không thể xử lý? Tôi hỏi b/c về mặt khái niệm, tôi không nghĩ rằng phân tán phù hợp cho một chuỗi thời gian - nhưng đó là một sự phân biệt khá tùy ý ngay cả trong tâm trí của tôi. –

+0

'cốt truyện' chỉ cho tôi một đường kết nối tất cả các điểm dữ liệu, nhưng không phải là các điểm dữ liệu (trừ khi có một cách mà tôi không biết). Nhưng tôi cũng muốn hiển thị các điểm dữ liệu để người xem biết tại thời điểm nào dữ liệu được thu thập. – sbhatla

+0

Trên ghi chú không liên quan, làm thế nào để bạn hiển thị mã nội tuyến trong ngăn xếp ngăn xếp? Giống như những gì bạn đã làm ở trên với các từ phân tán và cốt truyện. – sbhatla

Trả lời

0

Nếu bạn sử dụng một int hay float kiểu cho yy bạn không nhận được lỗi này với scatter():

yy = [0, 1] 
2

Dưới đây là một ví dụ mở rộng như thế nào tôi sẽ làm điều này:

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') 

enter image description here

Các vấn đề liên quan