seaborn 如何通过导入包来改变 pyplot 的行为?

how seaborn changes the behavior of pyplot by just importing the package?

我很好奇seaborn是如何通过import seaborn as sns改变matplotlib函数的行为的。 我想实现相同的功能来改变 pyplot 中 imshow() 函数的行为,例如,我想显示图形左下角的像素值。 当然可以重新定义 imshow() 函数,并导入重新定义的函数,但问题是我有多个脚本以许多不同的方式调用 imshow() ,例如 plt.imshow()imshow(),以及 OOP 风格 axes.imshow()。有没有像 seaborn 那样简单的方法来做到这一点? 如果我有时间的话,阅读 seaborn 的源代码当然会给我一些线索......

您可以在 python

中覆盖您想要的任何内容

my_pyplot.py

import matplotlib as mpl
def myPyPlot(*args,**kwargs):
    print "You Said:",args,kwargs

mpl.pyplot = myPyPlot

main.py

import my_pyplot as mpp
from matplotlib import pyplot
print pyplot("arg1","arg2",axes="yellow")

请注意,在导入修改后的内容之前,您需要先导入您的内容

Seaborn 不会按照您描述的方式更改 matplotlib 函数的行为。 Matplotlib exposes 一些自定义选项,通过更改各种绘图参数的默认值来生效。导入 seaborn 时,它会运行一些使用此功能更改全局默认值的代码。

更改默认参数值和更改函数行为之间存在重要区别。你提出的是后者,它有时被称为monkey patching。这是可能的,但它与 seaborn 正在做的不同,而且我不会在任何类型的生产环境中推荐它。