2015-11-26 3 views
-2

Я пытаюсь сделать мой график более плавным с scipy, но результатом является горизонтальная линия.Scipy, чтобы сделать график более плавным.

Код:

import numpy as np 
import matplotlib.pyplot as plt 
from scipy.interpolate import spline 

dd = [1.0, 0.7071067811865476, 0.5, 0.3535533905932738, 0.25, 0.1767766952966369] 
y = range(0,6) 

dd1 = np.array(dd) 
y1 = np.array(y) 

xsmooth = np.linspace (dd1.max(),dd1.min(),5) 
ysmooth = spline (dd1,y1,xsmooth) 

plt.plot(xsmooth ,ysmooth) 
plt.show() 

Заранее спасибо

+0

Ваш код не работает: 'ValueError: формы (8,6) и (5,) не выровнены: 6 (dim 1)! = 5 (dim 0) '. – EelkeSpaak

+0

@SiHa да.thanks SiHa. –

ответ

0

Я думаю, что вы можете перепутать х и у в вашем коде. Если дд ваши у-значения и у ваши рентгеновские значения, вы могли бы выполнить сплайн-интерполяции следующим образом:

import numpy as np 
import matplotlib.pyplot as plt 
from scipy.interpolate import spline 

y = [1.0, 0.7071067811865476, 0.5, 0.3535533905932738, 0.25, 0.1767766952966369] 
x = range(0,6) 

y = np.array(y) 
x = np.array(x) 

xsmooth = np.linspace (x.min(),x.max(),20) # an x vector with more intermediate values 
ysmooth = spline(x,y,xsmooth) 

plt.plot(xsmooth ,ysmooth) 
plt.plot(x,y,'o') 
plt.show()