我想创建一个显示真实数据和平滑版数据的图表。现在,我使用以下脚本:
import pandas as pd
import matplotlib.pyplot as plt
# DataFrame of 321 values
df = pd.read_csv('data.csv')
r = df.rolling(window=10, center=True, on='Value').mean()
fig = plt.figure()
ax = df['Value'].plot(style='--', c='b', alpha=0.5)
r.plot(ax=ax, legend=0, c='b')
plt.show()
然而,我希望这与... TensorBoard
。在那里,您可以在0
和1
之间指定平滑参数,这会更改滚动平均值的窗口,0
不平滑,1
极端平滑。这是怎么做到的?我也可以用Python做到这一点吗?
答案 0 :(得分:1)
您似乎可以使用scipy.interpolate
包为数据添加平滑度,如下所示:
from scipy.interpolate import spline
# 300 represents number of points to make between T.min and T.max
# you can use other number to adjust smoothness
axnew = np.linspace(df['Value'].min(), df['Value'].max(), 300)
power_smooth = spline(df['Value'], df['y_Value'], axnew)
plt.plot(xnew, power_smooth)
plt.show()
来自docs的示例:
三次样条
>>> x = np.arange(0, 2 * np.pi + np.pi / 4, 2 * np.pi / 8)
>>> y = np.sin(x)
# s parameter for adjust the smoothness
>>> tck = interpolate.splrep(x, y, s=0)
>>> xnew = np.arange(0, 2 * np.pi, np.pi / 50)
>>> ynew = interpolate.splev(xnew, tck, der=0)
相关问题:Plot smooth line with PyPlot
更新:@ImportanceOfBeingErnest注意到spline
的最新版本已弃用scipy
,因此您应调查splev
和splrep
。可以找到一些样本here。