oro*_*ome 5 python axes matplotlib figures subclassing
我有一个自定义图形类,并希望确保与其关联的所有轴(无论是使用subplots()或twinx()等创建的)都具有自定义行为。
现在,我通过在创建每个轴后将新方法绑定到每个轴来完成此操作,例如使用
import types
def my_ax_method(ax, test):
    print('{0} is doing something new as a {1}.'.format(ax, test))
class MyFigure(matplotlib.figure.Figure):
    def __init__(self, **kwargs):
        super(MyFigure, self).__init__(**kwargs)            
        axes_a = None
        axes_b = None
        axes_c = None
    def setup_axes(self, ax):    
        self.axes_a =  ax
        self.axes_b = self.axes_a.twinx()
        self.axes_c = self.axes_a.twiny()    
        self.axes_a.my_method = types.MethodType(my_ax_method, self.axes_a)
        self.axes_b.my_method = types.MethodType(my_ax_method, self.axes_b)
        self.axes_c.my_method = types.MethodType(my_ax_method, self.axes_c)
Run Code Online (Sandbox Code Playgroud)
在类似的事情中
    fig, ax = matplotlib.pyplot.subplots(FigureClass=MyFigure)
    fig.setup_axes(ax)
    fig.axes_a.my_method("probe of A")
    fig.axes_b.my_method("test of B")
    fig.axes_c.my_method("trial of C")
Run Code Online (Sandbox Code Playgroud)
这似乎是完成我想做的事情的一种脆弱的方式。有没有更好、更 Pythonic 的方法来解决这个问题?
特别是,有没有一种方法可以确保Axes我的所有自定义Figure类都属于特定类(就像对图形本身所做的那样):Axes我自己的自定义类可以将这些方法作为其定义的一部分?
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           759 次  |  
        
|   最近记录:  |