Python:在scipy plot上绘图?(沃罗诺)

Python:在scipy plot上绘图?(沃罗诺),python,numpy,matplotlib,scipy,voronoi,Python,Numpy,Matplotlib,Scipy,Voronoi,如何在voronoi图(这是一个scipy图)的顶部绘图?请注意,我的问题与他们解释如何对voronoi图进行着色时的问题略有不同 例如,假设我还有一些要点 points = np.array([[1,2], [3,4], [5,6], [7,8]]) 在第一个沃罗诺图之后。我想在现有地块内添加它们。我该怎么做 我所指的voronoi绘图是scipy.spatial.voronoi\u plot\u 2d()我认为您可以像这样简单地重用绘图: import numpy as np import

如何在voronoi图(这是一个scipy图)的顶部绘图?请注意,我的问题与他们解释如何对voronoi图进行着色时的问题略有不同

例如,假设我还有一些要点

points = np.array([[1,2], [3,4], [5,6], [7,8]])
在第一个沃罗诺图之后。我想在现有地块内添加它们。我该怎么做


我所指的voronoi绘图是
scipy.spatial.voronoi\u plot\u 2d()

我认为您可以像这样简单地重用绘图:

import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial import voronoi_plot_2d, Voronoi

points = np.array([[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]])
v = Voronoi(points)
voronoi_plot_2d(v)

p2 = [[0.25, 1], [1, 0.75], [1.75, 0.25], [1.75, 1.75]]
x, y = zip(*p2)

plt.scatter(x, y, color='r')
plt.show()

我认为您可以简单地重复使用如下绘图:

import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial import voronoi_plot_2d, Voronoi

points = np.array([[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]])
v = Voronoi(points)
voronoi_plot_2d(v)

p2 = [[0.25, 1], [1, 0.75], [1.75, 0.25], [1.75, 1.75]]
x, y = zip(*p2)

plt.scatter(x, y, color='r')
plt.show()

我也有同样的问题。这里有一个函数可以显式地执行此操作。注意:它是在无穷远处放置点。 那里有很大的改进空间;请随意编辑

def plot_vor_edges(vor, ax=None):

    if ax is None:
        ax = plt.axes()

    ver = vor.vertices

    for reg in vor.regions:
        # Remove vertices at infinity
        if len(reg)>=1:
            if -1 in reg:
                reg = np.roll(reg, -reg.index(-1))
                reg = [x for x in reg if x != -1]

                regionX = ver[reg, 1]
                regionY = ver[reg, 0]
            else:
                regionX = ver[reg + [reg[0]], 1]
                regionY = ver[reg + [reg[0]], 0]

            ax.plot(regionX, regionY, '-k', linewidth=0.5)
        else:
            continue


我也有同样的问题。这里有一个函数可以显式地执行此操作。注意:它是在无穷远处放置点。 那里有很大的改进空间;请随意编辑

def plot_vor_edges(vor, ax=None):

    if ax is None:
        ax = plt.axes()

    ver = vor.vertices

    for reg in vor.regions:
        # Remove vertices at infinity
        if len(reg)>=1:
            if -1 in reg:
                reg = np.roll(reg, -reg.index(-1))
                reg = [x for x in reg if x != -1]

                regionX = ver[reg, 1]
                regionY = ver[reg, 0]
            else:
                regionX = ver[reg + [reg[0]], 1]
                regionY = ver[reg + [reg[0]], 0]

            ax.plot(regionX, regionY, '-k', linewidth=0.5)
        else:
            continue


我想你可以通过指定在绘制新数据时要绘制的图形来实现这一点。你能给我举个例子吗?在现有绘图中添加[点]是什么意思?是否要从附加点计算新的voronoi图?在多远的地方不是你想要的?对不起我表达得很糟糕。不,我什么都不想算。我只想在voronoi绘图的同一个图形中绘制(作为散点图)额外的点。我认为,在绘制新数据时,您可以通过指定要在哪个图形上绘制来实现这一点。您可以给我一个示例吗?在现有绘图中添加[点]是什么意思?是否要从附加点计算新的voronoi图?在多远的地方不是你想要的?对不起我表达得很糟糕。不,我什么都不想算。我只想在同一个图中绘制(作为散点图)额外的点,作为voronoi图