如何修改Tkinter中Matplotlib NavigationToolbar2Tk的坐标显示精度?
修改Matplotlib工具栏坐标显示的小数位数
要调整工具栏右侧显示的(x,y)坐标小数位数,最直接的方式是重写坐标轴的format_coord方法,自定义坐标文本的格式化规则:
实现步骤
- 定义自定义坐标格式化函数,通过Python字符串格式化语法指定小数位数
- 将该函数赋值给坐标轴对象的
format_coord属性,替换默认逻辑
修改后的完整示例代码
from tkinter import Frame, Tk import matplotlib import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk window_main = Tk() matplotlib.use("TkAgg") # 设置Matplotlib后端 fig = plt.Figure() # 创建承载图形的画布 canvas = FigureCanvasTkAgg(fig, window_main) canvas.get_tk_widget().grid(column=0, row=0) canvas.draw() # 创建工具栏 toolbar_frame = Frame(window_main) toolbar_frame.grid(column=0, row=1) toolbar = NavigationToolbar2Tk(canvas, toolbar_frame) ax = fig.add_subplot(111) # 自定义坐标显示格式,这里设置为保留2位小数 def custom_format_coord(x, y): return f'x: {x:.2f}, y: {y:.2f}' # 替换坐标轴默认的格式化方法 ax.format_coord = custom_format_coord data_x = [1,2,3] data_y = [2.5,4,1.2] ax.plot(data_x,data_y) fig.canvas.draw_idle() window_main.mainloop()
格式调整说明
- 代码中的
:.2f表示保留2位小数,可按需修改::.3f对应3位小数,:.0f对应整数格式 - 该方法会直接覆盖工具栏默认的坐标显示逻辑,鼠标悬停画布时将显示自定义格式的坐标文本
内容的提问来源于stack exchange,提问作者AlMa
相关产品推荐
相关产品推荐

