I have two arrays I want to display :
x : [datetime.time(0, 17, 47, 782000), ...ect
y : [1712, 2002, ...ect
I'm trying to convert x to the format used by matplotlib but it never woks
x = [matplotlib.dates.date2num(i) for i in x]
But I get this error
AttributeError: 'datetime.time' object has no attribute 'toordinal'
My problem is linked with the time format : The raw info is like this :
00:04:49.251
Then I convert it
datetime.datetime.strptime(string, "%H:%M:%S.%f").time()
So the type is
<type 'datetime.time'>
The problem here is that you specify datetime.time
objects which only have the information on the time of day. As Emanuele Paolini
points out in their comment, matplotlib
expects to have datetime.datetime
objects which carry the date in addition to the time.
You may carry out the conversion:
import datetime
my_day = datetime.date(2014, 7, 15)
x_dt = [ datetime.datetime.combine(my_day, t) for t in x ]
Now you may use x_dt
with the plot
function.
The downside of this approach is that you may get the date somewhere on your plot, but that can be tackled by changing the label settings.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With