You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 01:58:19