Я пытаюсь определить некоторые функции построения графиков для автоматизации моего рабочего процесса. Я разработал, как гибко автоматизировать мою компоновку, чтобы иметь основной верхний график и любое количество нижних графиков ниже по мере необходимости (см. Рис.1). Но у меня есть другие определенные функции построения графиков с более богатым содержимым, которые я хотел бы использовать для заполнения макета. Можно ли использовать функцию макета и другие пользовательские функции графика в качестве аргументов для заполнения подзаговоров?
![enter image description here](https://i.stack.imgur.com/ha0xM.png)
Вот моя функция для рисунка 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)