通过参数

时间:2017-04-27 17:07:20

标签: python pandas matplotlib

我想创建一个显示真实数据和平滑版数据的图表。现在,我使用以下脚本:

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。在那里,您可以在01之间指定平滑参数,这会更改滚动平均值的窗口,0不平滑,1极端平滑。这是怎么做到的?我也可以用Python做到这一点吗?

1 个答案:

答案 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)

enter image description here

相关问题:Plot smooth line with PyPlot

更新:@ImportanceOfBeingErnest注意到spline的最新版本已弃用scipy,因此您应调查splevsplrep 。可以找到一些样本here