如何在不考虑每个单独值的情况下用平滑、连续的线条绘制以下噪声数据?我只想以更好的方式展示行为,而不关心嘈杂和极端值。这是我正在使用的代码:
import numpy
import sys
import matplotlib.pyplot as plt
from scipy.interpolate import spline
dataset = numpy.genfromtxt(fname='data', delimiter=",")
dic = {}
for d in dataset:
dic[d[0]] = d[1]
plt.plot(range(len(dic)), dic.values(),linestyle='-', linewidth=2)
plt.savefig('plot.png')
plt.show()
最佳答案
在 previous answer 中,我被介绍给Savitzky Golay filter ,一种特殊类型的低通滤波器,非常适合数据平滑。您希望生成的曲线有多“平滑”是一个偏好问题,这可以通过窗口大小和插值多项式的阶数进行调整。使用 sg_filter
的食谱示例:
import numpy as np
import sg_filter
import matplotlib.pyplot as plt
# Generate some sample data similar to your post
X = np.arange(1,1000,1)
Y = np.log(X**3) + 10*np.random.random(X.shape)
Y2 = sg_filter.savitzky_golay(Y, 101, 3)
plt.plot(X,Y,linestyle='-', linewidth=2,alpha=.5)
plt.plot(X,Y2,color='r')
plt.show()
关于python - 如何让这个 matplotlib 情节不那么嘈杂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22913670/