网上翻了一下午,加上自己改进了一下,终于成功啦,发出来给大家参考一下。
代码如下:
import numpy as np import pandas as pd from scipy.optimize import curve_fit import matplotlib.pyplot as plt import matplotlib from matplotlib.font_manager import FontProperties from matplotlib import rcParams excel1_path = "焊缝中心点真实位置.xlsx" excel2_path = "tracking_data1_1.xlsx" excel3_path = "tracking_data1.xlsx" df1 = pd.read_excel(excel1_path, engine='openpyxl') df2 = pd.read_excel(excel2_path, engine='openpyxl') df3 = pd.read_excel(excel3_path, engine='openpyxl') t_data1 = df1['Frame'].values x_data1 = df1['Center Y'].values t_data2 = df2['Frame'].values x_data2 = df2['Center Y'].values t_data3 = df3['Frame'].values x_data3 = df3['Center Y'].values config = { "font.family": 'serif', # 衬线字体 "font.size": 12, # 相当于小四大小 "font.serif": ['SimSun', 'Times New Roman'], # 宋体 "mathtext.fontset": 'stix', # matplotlib渲染数学字体时使用的字体,和Times New Roman差 别不大 'axes.unicode_minus': False # 处理负号,即-号 } rcParams.update(config) # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 避免中文乱码 plt.rcParams['axes.unicode_minus'] = False # 正常显示负号 plt.figure(figsize=(12, 8)) plt.ylim(3800, 4300) plt.plot(t_data1, x_data1, color='0.3', label=r'$\mathrm{actual\ path}$') plt.plot(t_data2, x_data2, color='0.6', linestyle='-.', label=r'$\mathrm{algorithm\ based\ on\ ECO-HC}$') plt.plot(t_data3, x_data3, color='0.3', linestyle='--', label=r'$\mathrm{proposed\ algorithm}$') plt.title('焊缝轨迹', size=18) plt.xlabel('帧数$\mathrm{t}$/帧', size=14) plt.ylabel('焊缝$\mathrm{y}$坐标/$\mathrm{pixel}$', size=14) plt.xticks(fontproperties='Times New Roman') plt.yticks(fontproperties='Times New Roman') plt.legend() plt.show()