我一直试图使绘图更平滑,就像这里所做的那样,但我的X轴是日期时间对象,无法与linspace兼容。
我将X轴转换为matplotlib日期:
Xnew = matplotlib.dates.date2num(X)
X_smooth = np.linspace(Xnew.min(), Xnew.max(), 10)
Y_smooth = spline(Xnew, Y, X_smooth)
但是我得到了一个空的图表,因为我的Y_smooth是
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
,原因不明。我该如何解决这个问题?
编辑:
当我打印变量时,我看不到任何异常。
X : [datetime.date(2016, 7, 31), datetime.date(2016, 7, 30), datetime.date(2016, 7, 29)]
X new: [ 736176. 736175. 736174.]
X new max: 736176.0
X new min: 736174.0
XSMOOTH [ 736174. 736174.22222222 736174.44444444 736174.66666667
736174.88888889 736175.11111111 736175.33333333 736175.55555556
736175.77777778 736176. ]
Y [711.74, 730.0, 698.0]
YSMOOTH [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
Xnew.min()
和Xnew.max()
的值是多少?发布更多细节。X
、X_smooth
和Xnew
的值是多少?在IPython执行期间进行调试,请尝试使用%debug
来添加断点,或者使用logging在执行期间查看中间值。 - Mark Mikofskinp.splie
文档。 - Mark MikofskiX
的顺序被颠倒了,Xnew
减少但Xsmooth
增加,反转Xnew
和Y
。 - Mark Mikofskiinterp1d
。它可以执行几种样条变体。 - OneCricketeer