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

如何解决Jupyter Notebook中重复显示的Matplotlib图默认呈缩略图的问题?

解决Jupyter Notebook复用Figure时的尺寸异常问题

核心原因

第一次使用plt.show()后,Notebook会默认缓存Figure的显示状态,后续调用display(fig)时会复用这个缩略图缓存,导致尺寸异常,PDF导出也会沿用这个错误尺寸。

解决方案

方案1:替换plt.show()为display(),避免缓存锁定

第一个单元格不再用plt.show(),改用IPython.display.display()显式控制渲染:

import matplotlib.pyplot as plt
from IPython.display import display

# 初始化Figure,指定尺寸和dpi保证清晰度
fig = plt.figure(figsize=(8, 8), dpi=100)
# 执行绘图操作,示例:plt.plot([1, 2, 3, 6, 8], [0, 2, 1, 3, 2])
display(fig)
plt.close()  # 可选,防止后续自动重复显示

后续修改并展示的单元格:

# 显式重置Figure尺寸,确保与初始设置一致
fig.set_size_inches(8, 8)
ax = fig.gca()
ax.set_xlim([5, 10])
ax.set_ylim([0, 3])
display(fig)

方案2:全局配置matplotlib后端,强制默认尺寸

在Notebook最开头添加全局配置,统一控制所有Figure的默认尺寸和清晰度:

%matplotlib inline
import matplotlib.pyplot as plt
from IPython.display import display

# 全局设置默认尺寸和dpi
plt.rcParams['figure.figsize'] = (8, 8)
plt.rcParams['figure.dpi'] = 100

第一个单元格绘图:

fig = plt.figure()
# 执行绘图操作
plt.show()

后续修改单元格:

ax = fig.gca()
ax.set_xlim([5, 10])
ax.set_ylim([0, 3])
# 强制重置尺寸,覆盖缓存的缩略图参数
fig.set_size_inches(8, 8)
display(fig)

方案3:强制刷新Figure渲染状态

如果前两种方法无效,可通过Canvas强制重新绘制,清除缓存:

ax = fig.gca()
ax.set_xlim([5, 10])
ax.set_ylim([0, 3])
fig.set_size_inches(8, 8)
# 强制重新渲染Figure
fig.canvas.draw()
display(fig)

PDF导出注意事项

导出前需确保所有修改后的Figure都已执行fig.set_dpi(300)(或更高dpi),提升矢量图清晰度,避免PDF中出现模糊的小尺寸图:

fig.set_dpi(300)
display(fig)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:33:32