将 np.rand()
替换为 randint(0, 10)
将生成坐标作为整数从 0,1,...
到 9
。
使用 '.' 作为标记将导致给定点的标记更小。
使用 'o' 作为标记,设置一个 markeredgecolor 并将主颜色设置为 'none',将导致圆形标记,可用于凸包上的点。标记的大小可以通过 markersize=
进行调整。
fig, axes = plt.subplots(ncols=..., nrows=...)
是创建多个子图的方便方法。
这是一个最简示例的代码:
from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt
import numpy as np
points = np.random.randint(0, 10, size=(15, 2))
hull = ConvexHull(points)
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(10, 3))
for ax in (ax1, ax2):
ax.plot(points[:, 0], points[:, 1], '.', color='k')
if ax == ax1:
ax.set_title('Given points')
else:
ax.set_title('Convex hull')
for simplex in hull.simplices:
ax.plot(points[simplex, 0], points[simplex, 1], 'c')
ax.plot(points[hull.vertices, 0], points[hull.vertices, 1], 'o', mec='r', color='none', lw=1, markersize=10)
ax.set_xticks(range(10))
ax.set_yticks(range(10))
plt.show()
![生成的图表](https://istack.dev59.com/meLd0.webp)
提示:要在单独的窗口中显示图表:
from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt
import numpy as np
points = np.random.randint(0, 10, size=(15, 2))
hull = ConvexHull(points)
for plot_id in (1, 2):
fig, ax = plt.subplots(ncols=1, figsize=(5, 3))
ax.plot(points[:, 0], points[:, 1], '.', color='k')
if plot_id == 1:
ax.set_title('Given points')
else:
ax.set_title('Convex hull')
for simplex in hull.simplices:
ax.plot(points[simplex, 0], points[simplex, 1], 'c')
ax.plot(points[hull.vertices, 0], points[hull.vertices, 1], 'o', mec='r', color='none', lw=1, markersize=10)
ax.set_xticks(range(10))
ax.set_yticks(range(10))
plt.show()