Python matplotlib导出eps文件打开后无显示内容问题求助
matplotlib导出带文本EPS文件无法加载的解决方案
根因定位
测试确认无文本的EPS可正常打开,问题根源为matplotlib导出EPS时的字体嵌入逻辑异常,叠加代码中存在转义字符错误,导致Evince渲染文本元素时卡住。
修复步骤
- 修正代码转义错误:给出的代码中,垂直文本的
va参数使用了HTML转义的"center",替换为标准Python字符串即可:# 修改前 plt.text(37.5,1.2,'txt block for vertical line',ha='center',va="center",rotation='vertical',backgroundcolor='white') # 修改后 plt.text(37.5,1.2,'txt block for vertical line',ha='center',va='center',rotation='vertical',backgroundcolor='white') - 配置EPS兼容字体:在导入pyplot前添加matplotlib全局配置,强制导出时嵌入兼容性更好的Type 42字体,规避Evince对默认Type 3字体的渲染缺陷:
import matplotlib matplotlib.rcParams['ps.fonttype'] = 42 # 若不需要LaTeX渲染文本,可关闭usetex减少依赖 # matplotlib.rcParams['text.usetex'] = False import matplotlib.pyplot as plt - 调整导出参数:保存文件时添加参数避免画布裁切异常,修改保存代码为:
plt.savefig('directory/plot.eps', format='eps', dpi=300, bbox_inches='tight') - 备选兼容方案:若上述调整仍无效,可先导出为PDF格式,再通过poppler工具集的
pdftops命令转换为EPS,转换后的文件对Evince兼容性极高:pdftops -eps your_exported_plot.pdf converted_plot.eps
内容的提问来源于stack exchange,提问作者Flux_entity
相关产品推荐
相关产品推荐

