Spyder中Matplotlib的figsize参数无可见效果的问题与解决
在Spyder中Matplotlib的figsize参数无效果的问题解答
问题描述
在Spyder中使用Matplotlib时,修改figsize参数调整绘图尺寸,无论设置什么数值,绘图在Spyder的Plots面板中显示大小都没有明显变化。例如设置py.figure(figsize=(16,16)),调整数值后显示大小仍大致相同。
最小复现代码:
import numpy as np from matplotlib import pyplot as py from matplotlib import * L=2 nx=130 dx=L/(nx-1) nt=25 CFL=1 u= np.ones(nx) u[int(0.5/dx):int(1/dx+1)]=2 x=np.linspace(0,L,nx) py.style.use('classic') dt=(CFL*dx) / (max(u)) nx2 = 41 dx2 = 2 / (nx2 - 1) nt2 = 20 nu2 = 0.3 sigma2 = 0.2 dt2 = sigma2 * dx2**2 / nu2 u2 = np.ones(nx2) u2[int(0.5 / dx2):int(1 / dx2 + 1)] = 2 x2 = np.linspace(0, 2, nx2) py.figure(figsize=(16,16)) for i in range(nt): un = u.copy() un2 = u2.copy() u[1:nx] = un[1:nx] - ((un[1:nx]*dt)/(1*dx))*(un[1:nx]-un[0:nx-1]) py.subplot(211) py.cla() py.plot(x, u, 'ko-') py.ylim(0, 2.2) py.title("Inviscid 1D Burger's Equation") py.xlabel("x") py.ylabel("u") u2[1:nx2-1] = un2[1:nx2-1] + (nu2 * dt2 / dx2**2) * ( un2[2:nx2] - 2 * un2[1:nx2-1] + un2[:nx2-2] ) py.subplot(212) py.cla() py.plot(x2, u2, color='black') py.ylim(0, 2.2) py.title('Diffusion') py.xlabel("x") py.ylabel("u") py.tight_layout() py.pause(0.0001)
疑问:为何修改figsize参数在Spyder中无可见效果?是Spyder自动缩放绘图以适配面板,还是Matplotlib代码存在问题?若问题源于Spyder的绘图查看器,在Spyder中如何让绘图实际显示更大?
原因分析
- Spyder Plots面板自动缩放:Spyder的Plots面板默认会自动缩放绘图,使其适配面板窗口大小。不管你设置的
figsize是多少,都会被缩放至面板可见区域,所以视觉上看不出尺寸变化,但绘图的原始尺寸其实已经改变。 - 动态绘图的渲染影响:代码中循环使用
py.cla()清除子图并重新绘制,每次py.pause()后,Spyder的绘图查看器会重新渲染并缩放,进一步掩盖了figsize的设置效果。
解决方法
调整Spyder绘图查看器设置
- 打开Spyder的Plots面板,点击右上角的菜单按钮(三个点图标),选择**"Adjust figure size"**,手动调整显示尺寸,此时能看到
figsize的实际效果。 - 选择**"New window"**,将绘图弹出到独立窗口显示,独立窗口会严格按照
figsize设置的尺寸展示,不会自动缩放。
修改Matplotlib后端配置
在代码开头添加以下代码,强制Matplotlib使用独立窗口后端,让绘图直接在独立窗口打开,不受Spyder面板缩放影响:
import matplotlib matplotlib.use('TkAgg') # Windows系统推荐;Mac系统可改用'Qt5Agg'
注意:修改后端后需要重启Spyder才能生效,不同系统支持的后端可能不同。
保存绘图验证尺寸
在代码末尾添加保存图片的代码,查看保存后的图片尺寸,就能验证figsize是否生效:
py.savefig('output_plot.png', dpi=100)
图片的实际像素尺寸为figsize(宽,高)乘以dpi,比如figsize=(16,16)+dpi=100会生成1600×1600像素的图片。
内容的提问来源于stack exchange,提问作者Hamza Hussian
相关产品推荐
相关产品推荐

