样式文件中的 matplotlib savefig.directory 不起作用

Posted

技术标签:

【中文标题】样式文件中的 matplotlib savefig.directory 不起作用【英文标题】:matplotlib savefig.directory in style file not working 【发布时间】:2016-05-05 05:43:42 【问题描述】:

我正在使用样式文件来控制我的图形保存的默认行为,并在/Users/me/.matplotlib/stylelib 目录下的save-article.mplstyle 中设置了以下内容。

savefig.directory   : ./Plots/ 

当我只使用当前目录. 时,我会得到类似于plt.savefig("test.pdf") 的预期输出。当我使用./Plots/ 时,文件没有出现。如果有帮助,我可以提供我的完整 save-article.mplstyle 文件。 Plots 目录当前存在,我可以使用 plt.savefig("./Plots/test.pdf") 之类的命令将文件保存到其中。当我在加载样式文件后检查 rcParams 时,文件中填充了正确的信息。

我该如何解决这个问题?

【问题讨论】:

./Plots/ 不应该是字符串?,您是否尝试过使用绝对路径而不是相对路径? @kikocorreoso 都不起作用。其实我在使用"./Plots/"的时候,rcParams文件中包含"'./Plots/'",说明路径本身有引号,就是报错了。 嗯,你能不能在你的 mplstyle 加载后检查你的rcParams,看看是否一切正常,import matplotlib;print(matplotlib.rcParams) 已经完成并更新了问题以反映这一点。 【参考方案1】:

如documentation中所述:

#savefig.directory   : ~        # default directory in savefig dialog box,
                                # leave empty to always use current working directory

当您在交互模式下工作时使用此选项,当您单击交互模式的保存图标时,它将使用savefig.directory选项中定义的目录。

最好的办法是使用os.pathpathlib 来定义要使用的目录:

import os

basepath = os.path.abspath('Plots')

# [...other code...]

plt.savefig(os.path.join(basepath, 'figurename.pdf))

【讨论】:

以上是关于样式文件中的 matplotlib savefig.directory 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib.savefig 忽略轴并在图像周围绘制黑色边框

为啥 Matplotlib savefig 图像重叠?

使用 matplotlib 的 savefig 保存从 python pandas 生成的图(AxesSubPlot)

Python机器学习(七十)Matplotlib 保存图形

matplotlib savefig() 绘图不同于 show()

Matplotlib,savefig() 的替代品以提高保存到 CString 对象时的性能?