假设我有一组给定的点,我使用CSV导入。我的最终目标是获取此XY数据,将其转换为极坐标形式,找到平滑线并最终获得残差图(在极坐标图和平滑线之间)。
(在代码中你会看到我在转换为极地之前将xy数据集中在一起)
所以最初我使用了数据,发现数据似乎混乱不堪。因此,当我转换为极地并找到残差时,它看起来很糟糕。 我想我需要事先对数据进行排序。
当我绘制xy时我需要看到的内容(大致)与我绘制xy时所看到的内容的比较显示在链接中:
我的导入和绘制数据的代码在这里:
def cart2pol(x, y):
rho = np.sqrt(x**2 + y**2)
phi = np.arctan2(y, x)
return(rho, phi)
def extract():
filename = "C:/Users/dsfsdf/Dropbox/rthrth/xy50.csv"
data = {}
data = np.genfromtxt(filename,delimiter=',',dtype= float)
block.append(data)
x.append(block[0][:,0])
y.append(block[0][:,1])
extract()
x = np.asarray(x)
y = np.asarray(y)
y = y-min(y[0,:]) #To centre it on the y-axis
x = x - ((max(x[0,:])+min(x[0,:]))/2) #To centre it on the x-axis
xf = x[0,:]
yf = y[0,:]
[rf,th] = cart2pol(xf,yf)
thf = th-np.pi / 2
plt.subplot(121)
plt.plot(yf,xf)
plt.xlabel('y')
plt.ylabel('x')
plt.subplot(122)
plt.plot(thf,rf)
plt.xlabel(r'$\theta$')
plt.ylabel('r')
我已尝试使用此代码进行顺时针排序,这是我在另一个帖子中找到的,它有很多帮助,但并没有完全解决问题:
def clockwise(x,y):
cx = np.mean(x)
cy = np.mean(y)
a = np.arctan2(y - cy, x - cx)
order = a.ravel().argsort()
x = x[order]
y = y[order]
return np.vstack([x,y])
下面是你得到的情节:http://imgur.com/pvxoZHo
这个过程有什么问题?我需要修复数据排序吗?我应该排序xy数据 - >然后去极地或去极地然后排序? 如何对数据进行排序以使绘图正确连接?
感谢您的帮助