0
我有一個2列表,首先是日期(日期時間對象),其次是這些日期的一些值。 當我創建一個簡單的情節:如何在matplotlib中平滑基於日期的數據?
plt.plot_date(x=dates, y=dur, fmt='r-')
我得到一個非常醜陋的形象like this。
我如何平滑這條線?我想推斷,但沒有找到一個簡單的功能。在Scipy中有非常困難的工具,但我不明白我必須添加什麼外推數據。
我有一個2列表,首先是日期(日期時間對象),其次是這些日期的一些值。 當我創建一個簡單的情節:如何在matplotlib中平滑基於日期的數據?
plt.plot_date(x=dates, y=dur, fmt='r-')
我得到一個非常醜陋的形象like this。
我如何平滑這條線?我想推斷,但沒有找到一個簡單的功能。在Scipy中有非常困難的工具,但我不明白我必須添加什麼外推數據。
你可以把它順利通過sp.polyfit
代碼:
import scipy as sp
import numpy as np
import matplotlib.pyplot as plt
# sampledata
x = np.arange(199)
r = np.random.rand(100)
y = np.convolve(r, r)
# plot sampledata
plt.plot(x, y, color='grey')
# smoothen sampledata using a 50 degree polynomial
p = sp.polyfit(x, y, deg=50)
y_ = sp.polyval(p, x)
# plot smoothened data
plt.plot(x, y_, color='r', linewidth=2)
plt.show()
如果使用['pandas'(http://pandas.pydata.org/),你可以做一個滾動平均。 – BrenBarn
它看起來像你的數據沒有排序 - 我可能會從'data = zip(dates,dur)'開始,然後'data = sorted(data,key = lambda j:j [0])''。 – colcarroll