Могу ли я использовать функцию графика в качестве шаблона макета фигуры и заполнять вспомогательные сюжеты с помощью других пользовательских функций графика? - PullRequest
1 голос
/ 10 января 2020

Я пытаюсь определить некоторые функции построения графиков для автоматизации моего рабочего процесса. Я разработал, как гибко автоматизировать мою компоновку, чтобы иметь основной верхний график и любое количество нижних графиков ниже по мере необходимости (см. Рис.1). Но у меня есть другие определенные функции построения графиков с более богатым содержимым, которые я хотел бы использовать для заполнения макета. Можно ли использовать функцию макета и другие пользовательские функции графика в качестве аргументов для заполнения подзаговоров?

enter image description here

Вот моя функция для рисунка 1:

def plot(*args, **kwargs):
    ''' Automates plotting of top plot with multiple plots possible (via *args), and any # of bottom 
        subplots with a single plot for each (via **kwargs).
        '''
    plt.rc('font', size=6)
    plt.style.use('ggplot')

    if kwargs:
        subs = len(kwargs.keys())
        hr_params = [max(3, subs+1)]
        hr_params.extend([1] * subs)
        fig, axes = plt.subplots(subs+1, 1, sharex=True, figsize=(8, max(6, subs+1)), 
                                 gridspec_kw={'height_ratios': hr_params})

        # Main plot
        for item in args:
                axes[0].plot(item, label=item.name) #, color=next(colors))  # make a list named colors if want specific colors
        axes[0].legend(loc='best')

        # Sub plots
        ax_dict ={}
        for i, ax in enumerate(axes):
            ax_dict[i] = ax
        for i, item in enumerate(kwargs.values(), 1):
            ax_dict[i].plot(item, label=item.name)
            ax_dict[i].legend(loc='best')

        fig.tight_layout()

    else:
        plt.figure(figsize=(9, 6))
        for item in args:
            plt.plot(item, label=item.name) #, color=next(colors))  # make a list named colors if want specific colors
        plt.legend(loc='best')

    return None

Итак, на рисунке 2, например, я надеялся, что смогу вызвать вышеупомянутую функцию, используя другие функции custom_plot() в качестве входных данных, подобных этому:

kwarg_dict = {'sub1': custom_plot2(), 'sub2': custom_plot2(), 'sub3': custom_plot2()}
plot(*custom_plot1(), **kwarg_dict)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...