I have a dataframe df
that looks like this:
Mid Quote Volume
2011-01-06 14:25:00 31.035 10
2011-01-06 14:25:01 32.085 42
2011-01-06 14:25:02 32.900 100
df.index
<class 'pandas.tseries.index.DatetimeIndex'>
[2011-01-06 14:25:00, ..., 2011-01-06 14:45:00]
Length: 1201, Freq: S, Timezone: None
I want to do a 3D plot as follow:
td = plt.figure().gca(projection='3d')
td.scatter(df.index.time, df['Mid Quote'].values, df['Volume'].values)
td.set_xlabel('Time')
td.set_ylabel('Mid Quote')
td.set_zlabel('Volume')
plt.show()
I get the following error: TypeError: float() argument must be a string or a number
I know the issue is with df.index.time
since if I replace this by range(0,len(df.Volume))
, I get the plot.
I also tried to replace df.index.time
with a new variable time
where
time = [y[0].time() for y in df.iterrows()]
>>>time
datetime.time(14, 44, 55), datetime.time(14, 44, 56), datetime.time(14, 44, 57), datetime.time(14, 44, 58), datetime.time(14, 44, 59), datetime.time(14, 45)]...
How can I get the time on the x-axis?