【发布时间】:2021-08-29 04:24:20
【问题描述】:
我正在使用 scipy.spatial 来可视化 Voronoi 图。但是,这里使用的距离度量是欧几里得 (L2)。我正在我的 Voronoi 图上寻找一种曼哈顿 (L1) 度量的方式。有没有简单(或多或少)的方法?
import numpy as np
import matplotlib.pyplot as plt
points = np.array([[1.5, 1.], [3.5, 1.], [5., 2.], [2.5, 3.], [3.5, 1.], [4., 4.]])
from scipy.spatial import Voronoi, voronoi_plot_2d
vor = Voronoi(points)
fig = plt.figure()
ax = fig.add_subplot('111')
ax.plot(points[:, 0], points[:, 1], 'o', color='k')
ax.set_xlim([-1, 9])
ax.set_ylim([-1, 9])
voronoi_plot_2d(vor, ax)
基本上我想得到类似的东西,但在 L1 指标中。
我找到了scipy.spatial.distance.cityblock 可以处理感兴趣的指标,但不完全确定如何实现它以使其正常工作?
【问题讨论】:
-
Manhattan Voronoi 有这个 python 实现:github.com/bobbysoon/TaxiVoronoi。我没有检查它是否/如何工作,但也许它会对你有所帮助。 (我通过这个 SO 答案找到了它:stackoverflow.com/a/31623208)
-
是的,我无法让它工作。
-
@bajun65537 想知道下面的解决方案是否适合您?