Как я могу убедиться, что мои оси Matplotlib имеют пользовательский класс?

У меня есть собственный класс фигур и я хочу убедиться, что все оси, связанные с ним, созданы ли с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)

в чем-то вроде

    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")

Это кажется хрупким способом достичь того, что я пытаюсь сделать. Есть ли лучший, более Pythonic способ пойти по этому поводу?

В частности, есть ли способ гарантировать, что всеAxes из моего обычаяFigure класс определенного класса (как это делается для самих фигур): обычайAxes мой собственный класс, который может иметь эти методы как часть его определения?

Ответы на вопрос(0)

Ваш ответ на вопрос