使用FigureCanvasTkAgg嵌入matplotlib时如何移除边框(axis off无效)
解决FigureCanvasTkAgg嵌入Tkinter时图表边框无法移除的问题
你之前使用plt.axis('off')无效的核心原因是:该方法作用于Matplotlib全局默认的Figure对象,而非你手动创建的f对应的子图sub1。要彻底移除黑色边框,需要针对目标子图操作,并消除布局空白,以下是具体解决方案:
关键修改步骤
- 针对目标子图关闭坐标轴:直接调用子图对象的
axis('off')方法,替代全局的plt.axis('off'),确保操作作用于你嵌入的图表。 - 消除子图与Figure的边距:通过
subplots_adjust将所有边距设为0,让子图完全填满Figure,避免露出额外背景区域。 - 移除Tkinter组件自带边框:若仍有残留边框,需配置Tkinter画布组件的样式,消除其自身边框和高亮效果。
修改后的完整代码
f = plt.Figure(figsize=(4, 4), dpi=100) sub1 = f.add_subplot(111) # 关闭目标子图的坐标轴及边框 sub1.axis('off') # 消除子图与figure边缘的所有空白 f.subplots_adjust(left=0, right=1, top=1, bottom=0, wspace=0, hspace=0) # 创建Matplotlib画布并嵌入Tkinter canvas = FigureCanvasTkAgg(f, self.w) tk_widget = canvas.get_tk_widget() # 移除Tkinter组件自身的边框和高亮 tk_widget.config(borderwidth=0, highlightthickness=0) tk_widget.grid(row=1, column=0, columnspan=8, padx=0, pady=0)
内容的提问来源于stack exchange,提问作者Aljaz Jelen
相关产品推荐
相关产品推荐

