将图形对象覆盖到 matplotlib 绘图

Overlay a figure object to matplotlib plot

我有一个函数返回的图形对象。

import numpy as np
from scipy.spatial import Voronoi, voronoi_plot_2d, Delaunay
import shapely.geometry
import shapely.ops

points = np.random.random((20, 2))
print(points)
vor = Voronoi(points)
fig = voronoi_plot_2d(vor, show_vertices=True, show_points=True)
fig.add
plt.show()
print(vor.ridge_points)
print(vor.ridge_points[1,0])
print(vor.ridge_points[1,1])
plt.plot(points[vor.ridge_points[1,0]], points[vor.ridge_points[1,1]])
plt.show()

我要叠加fig 在该行中创建的另一个地块上 plt.plot(points[vor.ridge_points[1,0]], points[vor.ridge_points[1,1]])

关于如何在一张图中可视化这两个图的建议将会有所帮助。

您应该创建一个 fig, ax 对象,并将 ax 参数传递给 voronoi_plot_2d,正如@Jody Klymak 在评论中所建议的,例如:

import numpy as np
from scipy.spatial import Voronoi, voronoi_plot_2d, Delaunay
import shapely.geometry
import shapely.ops
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
points = np.random.random((20, 2))
print(points)
vor = Voronoi(points)
voronoi_plot_2d(vor, show_vertices=True, show_points=True, ax=ax)

print(vor.ridge_points)
print(vor.ridge_points[1,0])
print(vor.ridge_points[1,1])
ax.plot(points[vor.ridge_points[1,0]], points[vor.ridge_points[1,1]])
plt.show()