我在工作中使用matplotlib
,公司的政策是在我们制作的每一张图上都包含水印。有没有办法将matplotlib
设置为默认情况下这样做?
我目前正在将每个Axes
对象传递给一个helper函数,该函数在左下角添加水印。
import matplotlib.pyplot as plt
def add_watermark(ax):
ax.text(ax.get_xlim()[0] + 0.1,
ax.get_ylim()[0] + 0.1,
"<Company Name>",
alpha=0.5)
fig, ax = plt.subplots(1, 1)
x = np.fromiter((np.random.uniform() for _ in range(100)), dtype=np.float32)
y = np.fromiter((np.random.uniform() for _ in range(100)), dtype=np.float32)
ax.scatter(x, y)
add_watermark(ax)
我想修改matplotlib
的默认行为,这样我就不必将每个axis示例传递给helper函数。
3条答案
按热度按时间b1zrtrql1#
您可以轻松地对默认轴进行子类化和monkey-patch。
然后将其导入到任何需要它的地方。
创建了
gk7wooem2#
我认为最简洁的解决方案是在一个单独的python脚本(例如,名为
companyplots.py
)中创建一个“公司绘图模板”,该脚本位于python的模块搜索路径中。您可以通过将其放在与实际绘图相同的文件夹中,或通过创建
/some/path/to/user_modules
文件夹并正确设置$PYTHONPATH
变量以包括其路径来完成此操作。在此文件中,收集所有必要的导入并使用默认绘图设置设置函数,例如:
现在,只需运行以下命令,以后的所有打印都可以回退到该模板:
wkyowqbh3#
从Matplotlib版本3.6和Seaborn 0.12开始,我用途:
您可以将其添加到单独的
addwatermark.py
文件中并调用from addwatermark.py import addwatermark
。用法示例:
还有Seaborn的作品:
如果在Seborn中使用
facetgrid
或pairgrid
,则可以通过其属性ax
访问轴。Matplotlib也有一个example,但它不适用于Seborn。