I am trying to plot 3 variables x,y,z on a 2d plot, with x (date) on the x axis, y (time) on the y axis and z (temperature) mapped with a colorscale. I have the three variables available within a pandas Dataframe and created an extra column with the datenumber so that matplotlib can work with it.
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
data=pd.DataFrame()
data['datenum']=mdates.date2num(data['Date'])
Example:
Date Time Tgrad datenum
0 2016-08-01 00 -0.841203 736177.0
1 2016-08-01 01 -0.629176 736177.0
2 2016-08-01 02 -0.623608 736177.0
3 2016-08-01 03 -0.615145 736177.0
4 2016-08-01 04 -0.726949 736177.0
5 2016-08-01 05 -0.788864 736177.0
6 2016-08-01 06 -0.794655 736177.0
7 2016-08-01 07 -0.775724 736177.0
8 2016-08-01 08 -0.677951 736177.0
I have been trying to follow this suggestions:
matplotlib 2D plot from x,y,z values Dates in the xaxis for a matplotlib plot with imshow
But have not been successful due to the wrong shape of my input data I think. I have tried something like this:
fig, ax = plt.subplots()
ax.imshow(data['Tgrad'], extent = [min(data['datenum']), max(data['datenum']),min(data['Time']), max(data['Time'])], cmap="autumn", aspect = "auto")
ax.xaxis_date()
But get a ValueError:
ValueError: setting an array element with a sequence
Is it necessary to have the data as numpy array or any other type? And how can I map the data once I have it in a different format?
Thanks you for helping. Vroni