我有一个4397L,39L的数据框,如下所示:
timestamp 0 1 2 3 4 5 6 7 8 9 ... \
2013-04-17 05:00:00 46 46 46 45 45 45 45 45 45 45 ...
2013-04-17 05:10:00 46 46 45 45 45 45 45 45 45 45 ...
2013-04-17 05:20:00 45 46 45 45 45 45 45 45 45 45 ...
2013-04-17 05:30:00 45 46 45 45 45 45 45 45 45 45 ...
当我使用:
绘制pcolor时ax.pcolor(df)
生成数据图。
但我希望时间(df.index)沿x轴标记,y轴标记为新的矢量x:
[-13.73038435 -12.73038435 -12.73038435 -11.73038435 -11.73038435
-10.73038435 -10.73038435 -9.73038435 -9.73038435 -8.73038435
-8.73038435 -7.73038435 -7.73038435 -6.73038435 -6.73038435
-5.73038435 -5.73038435 -4.73038435 -4.73038435 -3.73038435
-3.73038435 -2.73038435 -2.73038435 -1.73038435 -1.73038435
-0.73038435 -0.73038435 0.26961565 0.26961565 1.26961565
1.26961565 2.26961565 2.26961565 3.26961565 3.26961565
4.26961565 4.26961565 5.26961565 5.26961565]
在matlab中,情况就是这样:
ax.pcolor(df.index, x, df.transpose())
尺寸为:
df = (4397, 39)
x = (, 39L)
df.index = (4397L,)
然而,同样的逻辑在Python中不起作用。给出的错误是:
AttributeError: 'DatetimeIndex' object has no attribute 'reshape'
有什么想法吗?
答案 0 :(得分:1)
您需要从x和时间生成meshgrid。这是一个例子,我首先生成df(函数x *时间任意选择)。而且看起来你必须在绘图之前将DataFrame转换为数组。
time = sp.linspace(0, 10, 5)
x = sp.linspace(0, 1, 10)
TIME, X = sp.meshgrid(time, x)
df = pd.DataFrame(X * TIME).transpose()
df.index.name = 'time'
df.columns.name = 'x'
X, TIME = sp.meshgrid(x, time)
plt.pcolor(X, TIME, sp.array(df))