import matplotlib.pyplot as plt # 导入matplotlib库,用于绘制图形
import pandas as pd # 导入pandas库,用于读取和处理数据
from tqdm import tqdm # 导入tqdm库,用于创建进度条
import numpy as np
from scipy.spatial import ConvexHull
# 定义一个函数,用于绘制散点图,并保存为图片
def plot_data(group, data):
x, y = data['x'].values, data['y'].values # 从数据中提取x和y列
plt.figure(dpi=500, figsize=(10, 6)) # 创建一个新的图形,设置分辨率和大小
plt.scatter(x, y) # 绘制散点图
hull = ConvexHull(np.column_stack((x,y)))
hull_points = np.append(hull.vertices, hull.vertices[0])
print (hull_points)
print (x)
hx, hy = x[hull_points], y[hull_points]
plt.fill(hx, hy, alpha=0.3)
# 计算x的最大值减去最小值的结果
x_diff = data['x'].max() - data['x'].min()
y_diff = data['y'].max() - data['y'].min()
# 在散点图上添加一个文本注释,显示x_diff的值
plt.annotate('x_diff = %.2f,y_diff = %.2f' % (x_diff,y_diff), xy=(0.5, 0.9), xycoords='axes fraction')
plt.savefig('D:/test/%s.jpg'%group) # 保存图片到指定路径,以分组名命名
#plt.show() # 显示图片
# 读取xlsx文件中的数据,假设文件名是data.xlsx
df = pd.read_excel('data.xlsx')
# # 按照类别分组,并对每组数据调用plot_data函数
# # 使用groupby方法返回一个分组对象
groups = df.groupby('category')
# # 使用tqdm包装groups来创建进度条
for group, data in tqdm(groups):
plot_data(group, data)