# 三行配置使编译器支持绘图功能:
import sys
import matplotlib
matplotlib.use('Agg')
import numpy as np
from scipy.spatial import ConvexHull # 导入凸包算法
import matplotlib.pyplot as plt
# 定义二维点集数据
points = np.array([
[2, 4], # 点 1
[3, 4], # 点 2
[3, 0], # 点 3
[2, 2], # 点 4
[4, 1], # 点 5
[1, 2], # 点 6
[5, 0], # 点 7
[3, 1], # 点 8
[1, 2], # 点 9(重复点)
[0, 2] # 点 10
])
# 计算凸包:
hull = ConvexHull(points) # 生成凸包对象
hull_points = hull.simplices # 获取构成凸包的边索引
# 绘制所有蓝色散点:
plt.scatter(points[:,0], points[:,1], color='blue') # 蓝色散点
# 绘制凸包边界
for simplex in hull_points:
plt.plot(points[simplex,0], points[simplex,1], 'k-') # 黑色实线连接凸包边
plt.show()
# 两行代码实现图形输出:
plt.savefig(sys.stdout.buffer)
sys.stdout.flush()