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