Python 绘制图形的最短路径

Python 绘制图形的最短路径,python,Python,我有一组坐标,希望找到从最接近x=0,y=0的坐标到距离它最远的坐标的最短路径,并将其显示在图形上。不管怎样,我能做到吗 以下是相关坐标: 23 292 78 275 187 81 188 430 198 150 204 180 222 245 223 175 226 334 255 344 263 213 266 261 286 163 301 266 328 206 352 42 363 169 379 177 385 187 394 211 400 254 401 199 412 335

我有一组坐标,希望找到从最接近x=0,y=0的坐标到距离它最远的坐标的最短路径,并将其显示在图形上。不管怎样,我能做到吗

以下是相关坐标:

23 292
78 275
187 81
188 430
198 150
204 180
222 245
223 175
226 334
255 344
263 213
266 261
286 163
301 266
328 206
352 42
363 169
379 177
385 187
394 211
400 254
401 199
412 335
420 371
434 176
449 174
457 230
472 136

除此之外,是否也可以找到图形的直径(从a到b)?

这应该可以让您开始。我没有以任何方式让它变得漂亮,但基本的东西都在那里 让你继续前进

import matplotlib.pyplot as plt
import numpy as np

xy = np.array([[23, 292], [78, 275], [187, 81], [188, 430], [198, 150], [204, 180],         
              [222, 245], [223, 175], [226, 334], [255, 344], [263, 213], [266, 261], 
              [286, 163], [301, 266], [328, 206], [352, 42], [363, 169], [379, 177], 
              [385, 187], [394, 211], [400, 254], [401, 199], [412, 335], [420, 371],
              [434, 176], [449, 174], [457, 230], [472, 136]])
lengths = np.linalg.norm(xy, axis=1)
minindex = np.argmin(lengths)
maxindex = np.argmax(lengths)
diameter = lengths[maxindex] - lengths[minindex]
linex = (xy[minindex, 0], xy[maxindex, 0])
liney = (xy[minindex, 1], xy[maxindex, 1])
plt.scatter(xy[:, 0], xy[:, 1])
plt.plot(linex, liney)
plt.show()

不完全确定你的
直径
问题,但我有一个想法。

你可以使用
((x2-x1)**2+(y2-y1)**2)**0.5
来计算两点之间的距离(如果你只需要计算最近/最远的距离,跳过平方根,因为它非常慢)。谢谢你,这听起来是一个快速的解决方案!整洁的非常感谢。