我有一个数组点。
nodes = [(1, 2), (6, 15), (10, 6), (10, 3), (3, 7)]
现在,我需要绘制通过这些点的样条曲线。您可以查看图像结果
但是我不知道如何使用matplotlib.pyplot绘制。请帮忙。
nodes = [(1, 2), (6, 15), (10, 6), (10, 3), (3, 7)]
现在,我需要绘制通过这些点的样条曲线。您可以查看图像结果
但是我不知道如何使用matplotlib.pyplot绘制。请帮忙。
所以,正确的代码应该是:
from __future__ import division
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate
nodes = np.array( [ [1, 2], [6, 15], [10, 6], [10, 3], [3, 7] ] )
x = nodes[:,0]
y = nodes[:,1]
tck,u = interpolate.splprep( [x,y] ,s = 0 )
xnew,ynew = interpolate.splev( np.linspace( 0, 1, 100 ), tck,der = 0)
plt.plot( x,y,'o' , xnew ,ynew )
plt.legend( [ 'data' , 'spline'] )
plt.axis( [ x.min() - 1 , x.max() + 1 , y.min() - 1 , y.max() + 2 ] )
plt.show()
splprep()
调用中漏掉了s=0
,这就是为什么样条曲线错过了右下角的点并且与OP所需的输出不完全匹配的原因。我认为现在答案可能需要进行一些编辑 - 你可以将代码从“best you came up”移动到上一个图像之上进行编辑,然后删除“UPDATE”之前的所有内容,因为它实际上并没有回答原始问题。 - J Richard Snapefrom __future__ import division
这一行或将其移到顶部,否则会出现错误。 - hitzg