matplotlib 缩放时重绘坐标轴

1 投票
1 回答
1331 浏览
提问于 2025-04-17 16:17

我有一个简单的图表,上面有一个导航工具栏。当我放大或移动图表时,图表会正确更新,但坐标轴的标签就乱了。就好像在绘制新标签之前没有清除旧的文本一样,所以你会看到新标签覆盖在旧标签上。如果我调整窗口大小,似乎会进行一次完整的重绘,这样标签就会修复。以下是我的简单示例:

import matplotlib
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure

from Tix import *
from Tkconstants import *

root = Tk()
f = Figure(figsize=(12,5), dpi=100, frameon=False)
s = f.add_subplot(111, title="test")
x = [0,1,2,3,4,5]
y = [5,2,6,7,3,6]

s.plot(x,y,label="Test")

canvas = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=1)
NavigationToolbar2TkAgg(canvas, root)


root.mainloop()

这是调整之前的样子:

enter image description here

这是移动之后的样子:

enter image description here

1 个回答

1

正如Oblivion所建议的:
去掉f = Figure(figsize=(12,5), dpi=100, frameon=False)中的frameon=False这个选项,就解决了问题。

撰写回答