绘制箭袋或倒钩的时间序列(日期)的标准方法是什么?我经常在Pandas DataFrame中有时间序列,并将它们绘制成如下:
plt.plot(df.index.to_pydatetime(), df.parameter)
这非常有效,可以将x轴视为真实日期,这对于格式化或使用Datetime对象等设置xlim()非常方便。
以相同的方式将此与箭袋或倒钩一起使用会导致:
TypeError: float() argument must be a string or a number
这可以通过以下方式克服:
ax.barbs(df.index.values.astype('d'), np.ones(size) * 6.5, df.U.values, df.V.values, length=8, pivot='middle')
ax.set_xticklabels(df.index.to_pydatetime())
哪个有效,但意味着我必须将日期转换为浮点数,然后手动覆盖标签。还有更好的方法吗?
以下是一些类似于我的案例的示例代码:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
size = 10
wspd = np.random.randint(0,40,size=size)
wdir = np.linspace(0,360 * np.pi/180, num=size)
U = -wspd*np.sin(wdir)
V = -wspd*np.cos(wdir)
df = pd.DataFrame(np.vstack([U,V]).T, index=pd.date_range('2012-1-1', periods=size, freq='M'), columns=['U', 'V'])
fig, ax = plt.subplots(1,1, figsize=(15,4))
ax.plot(df.index.values.astype('d'), df.V * 0.1 + 4, color='k')
ax.quiver(df.index.values.astype('d'), np.ones(size) * 3.5, df.U.values, df.V.values, pivot='mid')
ax.barbs(df.index.values.astype('d'), np.ones(size) * 6.5, df.U.values, df.V.values, length=8, pivot='middle')
ax.set_xticklabels(df.index.to_pydatetime())
答案 0 :(得分:2)
我最终使用了以下代码:
idx = mpl.dates.date2num(df.index)
ax.xaxis.set_major_formatter(mpl.dates.DateFormatter('%d-%m-%Y'))
ax.plot(idx, df.V * 0.1 + 4, 'o-',color='k')
ax.quiver(idx, np.ones(size) * 3.5, df.U.values, df.V.values, pivot='mid')
ax.barbs(idx, np.ones(size) * 6.5, df.U.values, df.V.values, length=8, pivot='middle')
答案 1 :(得分:1)