在Tkinter GUI绘制Pandas DataFrame双Y轴图:轴标签与刻度范围设置问题
问题解决方案
1. 为第二个Y轴设置标签
当使用secondary_y=True绘图时,直接获取次坐标轴对象,调用set_ylabel()方法即可完成标签设置。
2. 分别设置主次Y轴的刻度与范围
- 主Y轴:通过初始创建的
ax对象,使用set_yticks()设置刻度、set_ylim()设置数值范围; - 次Y轴:通过绘图时返回的次轴对象,同样用
set_yticks()和set_ylim()完成对应设置。
修改后的完整代码示例
x = df_Data_7370(start_date, end_date) fig, ax = plt.subplots(figsize=(5,5)) # 绘制主Y轴数据并设置参数 x.plot(x="Diff_Rollkreis", y="Beugemoment", xlabel='Diff. Rollkreis-Ø [mm]', ylabel='Beugemoment [Nm]', style='o', color='red', markersize=2, ax=ax) # 调整主Y轴刻度与范围(可根据实际数据修改) ax.set_yticks([0,2,4,6,8,10]) ax.set_ylim(0, 10) # 绘制次Y轴数据,获取次轴对象 ax2 = x.plot(x="Diff_Rollkreis", y="Axialspiel", style='o', color='blue', markersize=2, ax=ax, secondary_y=True) # 设置次Y轴标签(替换为你的实际单位) ax2.set_ylabel('Axialspiel [单位]') # 调整次Y轴刻度与范围(可根据实际数据修改) ax2.set_yticks([0, 0.5, 1, 1.5, 2]) ax2.set_ylim(0, 2) canvas = FigureCanvasTkAgg(fig, master = master) canvas.get_tk_widget().place(x=235,y=0) canvas.draw()
更直观的替代实现方式(使用twinx()创建次轴)
如果想更清晰地控制两个坐标轴,可以先创建次轴再分别绘图:
x = df_Data_7370(start_date, end_date) fig, ax = plt.subplots(figsize=(5,5)) # 主Y轴操作 ax.scatter(x["Diff_Rollkreis"], x["Beugemoment"], color='red', s=2) ax.set_xlabel('Diff. Rollkreis-Ø [mm]') ax.set_ylabel('Beugemoment [Nm]') ax.set_yticks([0,2,4,6,8,10]) ax.set_ylim(0, 10) # 创建并设置次Y轴 ax2 = ax.twinx() ax2.scatter(x["Diff_Rollkreis"], x["Axialspiel"], color='blue', s=2) ax2.set_ylabel('Axialspiel [单位]') ax2.set_yticks([0, 0.5, 1, 1.5, 2]) ax2.set_ylim(0, 2) # 可选:添加图例区分两组数据 fig.legend(['Beugemoment', 'Axialspiel'], loc='upper right') canvas = FigureCanvasTkAgg(fig, master = master) canvas.get_tk_widget().place(x=235,y=0) canvas.draw()
内容的提问来源于stack exchange,提问作者Nino
相关产品推荐
相关产品推荐

