orginal_plot.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import os
  2. import pandas as pd
  3. import seaborn as sns
  4. import matplotlib.pyplot as plt
  5. from matplotlib.ticker import MaxNLocator
  6. import warnings
  7. warnings.filterwarnings("ignore", category=FutureWarning) # 忽略特定警告
  8. plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体
  9. plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
  10. # 指定文件夹路径
  11. folder_path = r'C:/Users/laiwe/Desktop/风电/激光测量/测试数据/20250728/'
  12. # 遍历文件夹中的所有CSV文件
  13. for filename in os.listdir(folder_path):
  14. if filename.endswith('.csv'):
  15. csv_path = os.path.join(folder_path, filename)
  16. # 读取第2、4、9列的数据
  17. data = pd.read_csv(csv_path, usecols=[1, 3, 8], header=None, engine='c')
  18. # 找到第一列中最大值和最小值的位置
  19. max_value = data.iloc[:, 0].max()
  20. max_index = data.iloc[:, 0].idxmax()
  21. min_index = data.iloc[:, 0].idxmin()
  22. print(f'最大值: {max_value}, 最大值位置: {max_index}')
  23. print(f'最小值: {data.iloc[min_index, 0]}, 最小值位置: {min_index}')
  24. # 检查最小值的位置是否是最大值位置的下一个
  25. if min_index == max_index + 1:
  26. # 将最小值及其之后的所有值都加上最大值
  27. data.iloc[min_index:, 0] += max_value
  28. data = data.head(int(len(data) * 0.01))
  29. # 绘制原始数据图
  30. data.columns = ['time', 'distance1', 'distance2']
  31. plt.figure(figsize=(300, 150))
  32. sns.scatterplot(data=data, x='time', y='distance1', s=50, color='green')
  33. sns.scatterplot(data=data, x='time', y='distance2', s=50, color='red')
  34. abxy = plt.gca() # 获取当前坐标轴对象
  35. plt.grid(linewidth=2) # 设置网格线宽度为2
  36. abxy.xaxis.set_major_locator(MaxNLocator(nbins=100)) # 设置x轴主刻度的最大数量为10
  37. plt.xlabel('时间', fontsize=16, fontweight='bold') # 添加x轴标签
  38. plt.ylabel('距离(m)', fontsize=16, fontweight='bold') # 添加y轴标签
  39. abxy.tick_params(axis='x', labelsize=14, labelcolor='black', width=2) # 设置x轴刻度标签
  40. abxy.tick_params(axis='y', labelsize=14, labelcolor='black', width=2) # 设置y轴刻度标签
  41. # 生成图像文件名
  42. image_filename = os.path.splitext(filename)[0] + 'small.png'
  43. image_path = os.path.join(folder_path, image_filename)
  44. # 保存图像
  45. plt.savefig(image_path, dpi=100, pil_kwargs={"icc_profile": False})
  46. plt.close()