首页 > 解决方案 > 使用自定义 matplotlibrc 文件运送 Python 包

问题描述

我正在编写一个包,其中包括使用 matplotlib 进行一些绘图。我希望使用该包生成的所有绘图都遵循在matplorlibrc文件中定义的自定义样式。目前,我使用的(最小)包结构如下:

pkg
├── pkg
│   ├── afile.py
│   ├── __init__.py
│   └── _mpl_config
│       └── style.mplstyle
└── setup.py

以下是靠近顶部的afile.py

import os
import matplotlib.pyplot as plt

plt.style.use(os.path.join(
    os.path.split(__file__)[0], '_mpl_config', 'style.mplstyle'))

# some plotting routines...

__init__.py

import pkg.afile

完成后pip install,我可以使用绘图例程

import pkg
pkg.<plotting_routine>

到目前为止,这似乎有效,因为上面的行指示 matplotlib 使用在<path_to_pkg>/pkg/_mpl_config/style.mplstyle. 但是,我不确定这是否足够强大(即将在所有导入情况下使用)或者是否有更好的方法。

标签: pythonmatplotlibpackage

解决方案


你不应该用你的包覆盖 matplotlib 样式,因为最终用户可能希望在其代码的其他部分使用它自己的样式。相反,每次要制作绘图时都使用上下文管理器:

with mpl.style.context(os.path.join(os.path.split(__file__)[0], '_mpl_config', 'style.mplstyle')):
    # Do your plotting here

推荐阅读