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

Matplotlib生成的.pgf文件编译后显示模糊问题求助

解决MacOS Preview中LaTeX编译PGF绘图模糊的问题

Mac Preview显示模糊的核心原因是默认导出的PGF依赖低分辨率PNG位图,而Preview的位图缩放插值策略不佳,以下是几种可行的解决办法:

方案1:生成纯矢量PGF(推荐)

让Matplotlib直接输出矢量格式的PGF,彻底摆脱位图依赖,确保所有查看器都能清晰渲染:

import matplotlib.pyplot as plt
import numpy as np

# 切换到PGF矢量后端
plt.switch_backend('pgf')
# 可选:配置PGF与LaTeX环境对齐
plt.rcParams.update({
    "pgf.texsystem": "pdflatex",
    "font.family": "serif",
})

plt.matshow(np.random.random((20, 20)), interpolation="none")
# 保存为纯矢量PGF,不生成外部PNG
plt.savefig("plot.pgf", bbox_inches="tight")

修改后原LaTeX代码无需调整,编译出的PDF在所有工具中都能清晰区分单元格。

方案2:在LaTeX中关闭图像插值

如果保留位图嵌入的PGF,可强制关闭图像插值,让Preview以硬像素方式渲染:

\documentclass{standalone}
\usepackage{pgf,graphicx}
\begin{document}
% 用includegraphics替代直接input,关闭插值
\includegraphics[interpolate=false]{plot.pgf}
\end{document}

此方法会让20×20的像素图在放大时显示清晰的单元格边界,避免模糊。

方案3:提升嵌入PNG的分辨率

让Matplotlib生成更高分辨率的PNG嵌入PGF,给Preview足够的像素数据进行缩放:

import matplotlib.pyplot as plt
import numpy as np

plt.matshow(np.random.random((20, 20)), interpolation="none")
# 设置高DPI导出,生成高分辨率PNG
plt.savefig("plot.pgf", dpi=600)

高分辨率PNG可避免Preview因像素不足导致的模糊问题。

方案4:更换PDF查看工具

使用Skim、Adobe Acrobat Reader等替代Mac Preview,这些工具对PDF嵌入图像的渲染策略更合理,能清晰显示PGF绘图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:52:11