为数组绘制平滑曲线,为另一个绘制正常曲线 - Python

时间:2015-03-27 04:37:44

标签: python python-3.x matplotlib plot

我有以下绘图,两个形状阵列(120,)和(120,)。对于第二个阵列,我试图得到一个平滑的情节,但无法这样做。 以下绘制了正常情节:

 add_z = array([ 22.39409055, 20.91765398, 19.80805759, 19.14836638, 23.54310977, 19.68638808, 21.25143616, 21.32550146, 18.80392599, 17.37016759, 19.21143494, 18.27464661, 21.25150385, 20.61853909 ]) 

 dataNew = array([[ 26.69], [ 24.94], [ 22.37], [ 23.5 ], [ 22.69], [ 22.62], [ 18.5 ], [ 20.87], [ 19. ], [ 19.75], [ 20.72], [ 19.78], [ 20.38], [ 22.06]])

 import matplotlib.pyplot as plt
 plt.figure(figsize = (10,5))
 plt.plot(dataNew[:],'g')
 plt.plot(add_z[:],'b');

我尝试使用scipy's插值方法但是,我真的不熟悉样条线。我试图将dataNew作为正常情节,add_z作为平滑曲线在同一个绘图窗口中进行。两者都是numpy数组。

1 个答案:

答案 0 :(得分:1)

这只是修补另一个stackoverflow的答案,我已经尴尬地放错了地方:

import matplotlib.pyplot as plt
import numpy as np

add_z = np.array([ 22.39409055, 20.91765398, 19.80805759, 19.14836638, 23.54310977, 19.68638808, 21.25143616, 21.32550146, 18.80392599, 17.37016759, 19.21143494, 18.27464661, 21.25150385, 20.61853909, 22.89028155, 22.3965408 ])

dataNew = np.array([[ 26.69], [ 24.94], [ 22.37], [ 23.5 ], [ 22.69], [ 22.62], [ 18.5 ], [ 20.87], [ 19. ], [ 19.75], [ 20.72], [ 19.78], [ 20.38], [ 22.06]])

plt.figure(figsize = (10,5))
plt.plot(dataNew[:],'g')
plt.plot(add_z[:],'b');

from scipy import interpolate
f = interpolate.interp1d(np.arange(len(add_z)), add_z, kind='cubic')
xnew = np.arange(0, len(add_z)-1, 0.1)
ynew = f(xnew)
plt.plot(xnew, ynew, 'b:')

enter image description here