如何消除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
相关产品推荐
相关产品推荐

