python - 拟合时间戳 TZ-aware 不显示年份 x-label
问题描述
我想线性拟合在 x 轴标签中显示年份的 8 年时间序列数据。
出现问题是因为我TZ-aware
的dataframe
. 所以,我不能直接将我的拟合代码与这种类型的时间戳一起使用。文件在这里。这就是我所做的。
# Convert TZ-aware timestamp intu numbers
ts = df['Timestamp'].apply(lambda x:x.toordinal()).sort_values()
# Fit
from numpy.polynomial.polynomial import polyfit
y = df.data
x = ts
fig, (ax) = plt.subplots(1,1, figsize=(10, 6))
ax.scatter(x, y)
b, m = polyfit(x, y, 1)
plt.plot(x, b + m * x, 'blue', linewidth=1.5)
plt.show()
结果如下。
正如预期的那样,它有效。但是,x 轴显示的是数字而不是年份。我想在 x 轴上 显示月-年标签。
任何帮助都会很棒,并在此先感谢。
解决方案
@Dodge 在这篇文章中的代码给了我解决方案。
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
y_values = df.loc[:, "data"]
x_values = np.linspace(0,1,len(df.loc[:, "data"]))
poly_degree = 1
coeffs = np.polyfit(x_values, y_values, poly_degree)
poly_eqn = np.poly1d(coeffs)
y_hat = poly_eqn(x_values)
plt.figure(figsize=(8,4))
plt.plot(df.loc[:, "Timestamp"], df.loc[:,"data"], "ro")
plt.plot(df.loc[:, "Timestamp"],y_hat)
plt.ylabel('data')
plt.xlabel('Year')
推荐阅读
- identity - 如何加密getAccountInfo方法响应的用户信息
- css - 小屏幕引导程序 5 中 div 的内联显示
- blazor - 在 Blazor WASM 应用启动时初始化上下文数据
- tfs - TFS 错误 - 路径“{0}”在路径组件的开头包含“$”。删除“$”并重试
- android - Android 11 不刷新位置
- cryptocurrency - TRON Nile Testnet 上的区块链同步缓慢
- json - 将 JSONObject 类型转换为 JSONArray 时出现异常
- python - Groupby 和值计数类别
- docker - 可以在 VMWARE ESXI 上安装 docker 桌面吗?
- c# - 部分视图的视图模型未绑定到主视图模型的视图模型