0

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?

Plug4
  • 3,838
  • 9
  • 51
  • 79

0 Answers0