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

如何消除Matplotlib移动坐标轴后残留的空白区域?

解决Matplotlib图表在Tkinter中显示的空白区域问题

你遇到的空白区域其实是figure和axes之间的默认边距导致的,只要把subplot的边距全部设为0,让axes完全填满figure就能解决。

具体修改步骤

在创建axes之后,添加一行代码调整subplot布局,消除边距:

fig.subplots_adjust(left=0, right=1, bottom=0, top=1)

修改后的完整代码

from tkinter import * 
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk)
import random
import numpy as np

root = Tk()
root.geometry("500x500")

# CREATE X VALUES
x_list = np.arange(-20, 20, .01)

# GENERATE 'RANDOM' VALUES FOR THE QUADRATIC EQUATION'S PARAMETERS
a = random.choice([-1,-0.6,0.6,1])
b = random.uniform(-5,5)
c = random.randint(-5,5)

# CREATE FIGURE
fig = Figure(figsize = (5, 5), dpi = 100)

# PLOT 
ax = fig.add_subplot(111)
ax.plot(x_list, a * np.power(x_list,2) + b * x_list + c)
ax.axis([-20,20,-20,20])

# 关键:消除figure和axes之间的边距,让axes填满整个figure
fig.subplots_adjust(left=0, right=1, bottom=0, top=1)

# CENTER TWO AXES
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('zero')

# HIDE THE OTHER TWO AXES
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# SET TICKS POSITION
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')

# HIDE NUMBER LABELS
ax.set_xticklabels([])
ax.set_yticklabels([])

# -------------------------- COLORS
fig.set_facecolor('#68C45F')
ax.set_facecolor('#E56361')

# CREATE CANVAS
canvas = FigureCanvasTkAgg(fig, master = root)  
canvas.draw()
canvas.get_tk_widget().pack()

root.mainloop()

补充说明

  • fig.subplots_adjust(left=0, right=1, bottom=0, top=1) 这行代码把subplot四个方向的边距都设为0,让axes完全覆盖figure区域,不会再露出figure的背景色(你代码里的绿色部分)。
  • 如果想要更贴近图形计算器的简洁样式,还可以用 ax.set_xticks([]) 和 ax.set_yticks([]) 直接把刻度线也去掉。

内容的提问来源于stack exchange,提问作者cenfra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:03:14