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
相关产品推荐
相关产品推荐

