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

时间:2015-06-05 19:29:57

标签: python matplotlib monkeypatching seaborn

我很想知道seaborn如何通过import seaborn as sns改变matplotlib函数的行为。 我想实现相同的功能来改变pyplot中imshow()函数的行为,例如,我想在图的左下角显示像素值。 当然可以重新定义imshow()函数,并导入重新定义的函数,但问题是我有多个脚本以多种不同的方式调用imshow(),例如plt.imshow(),{{1} }和OOP样式imshow()。像seaborn那样有一个简单的方法吗? 阅读seaborn的源代码当然会给我一些线索,如果我有时间奢侈...

2 个答案:

答案 0 :(得分:1)

你可以在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")

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

答案 1 :(得分:1)

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

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