Python Matplotlib:子批次的可变大小?

Python Matplotlib:子批次的可变大小?,python,dynamic,matplotlib,plot,subplot,Python,Dynamic,Matplotlib,Plot,Subplot,我有一个项目,我用matplotlib绘制和保存图形。由于项目本身工作得很好,我最近开始重构,但有一个问题我还没有找到一个好的解决方案。为了分割实现和日志记录,我编写了一个日志记录类,将数据传递给一个绘图类,在那里我遇到了一个问题:在运行之前,我不知道一个日志记录绘图/图中将存在多少子绘图 所以,在重构之前,我有很多不同的绘图函数和许多if语句。现在我想把所有这些东西传递给我的plotting类…但是我现在还不知道plotting类应该如何处理这些数据 之前,我有类似的东西(这里:4个子地块):

我有一个项目,我用matplotlib绘制和保存图形。由于项目本身工作得很好,我最近开始重构,但有一个问题我还没有找到一个好的解决方案。为了分割实现和日志记录,我编写了一个日志记录类,将数据传递给一个绘图类,在那里我遇到了一个问题:在运行之前,我不知道一个日志记录绘图/图中将存在多少子绘图

所以,在重构之前,我有很多不同的绘图函数和许多if语句。现在我想把所有这些东西传递给我的plotting类…但是我现在还不知道plotting类应该如何处理这些数据

之前,我有类似的东西(这里:4个子地块):

当然,我可以在绘图类中为1、2、3。。。子情节,但我又重复了一遍。

我是否可以创建一个缓冲区在循环中动态添加一个子批或类似的东西


还有其他想法吗?

编写打印函数,将
对象+数据作为输入。在子图+数据列表上编写for循环相对容易。是的,但我希望plotting方法动态创建Axis对象,以便plotting类接受任意大小的输入并为输入创建精确数量的子图。如果我必须输入Axis对象,我必须手动执行
plt.子图(2,2)
,在我想要绘制数据的任何地方都使用固定大小?!将逻辑、一组将数据绘制到单个
轴上的函数和一个接收数据+选项+配置+任何内容的调度程序函数分开,创建图形+轴,然后调度到前面提到的函数。这样,您可以最大限度地重复使用代码(和可读性!)。您可以动态调整
对象的大小,但没有很好的内置工具。您能举个例子吗?也许对我来说已经太晚了,我应该去睡觉了,但是我想不出一个适合dispatcher函数的解决方案。编写以
对象+数据作为输入的绘图函数。在子图+数据列表上编写for循环相对容易。是的,但我希望plotting方法动态创建Axis对象,以便plotting类接受任意大小的输入并为输入创建精确数量的子图。如果我必须输入Axis对象,我必须手动执行
plt.子图(2,2)
,在我想要绘制数据的任何地方都使用固定大小?!将逻辑、一组将数据绘制到单个
轴上的函数和一个接收数据+选项+配置+任何内容的调度程序函数分开,创建图形+轴,然后调度到前面提到的函数。这样,您可以最大限度地重复使用代码(和可读性!)。您可以动态调整
对象的大小,但没有很好的内置工具。您能举个例子吗?也许对我来说太晚了,我应该去睡觉了,但我想不出一个合适的解决方案来实现调度功能。。
def plotA(ax, data):
    pass

def plotB(ax, data):
    pass

def dispatcher(data, list_of_plot_types):
    function_map = {'A': plotA, 'B': plotB}
    fig, list_of_axes = plt.subplots(1, len(list_of_plot_types))

    for ax, plot_type in zip(list_of_axes, list_of_plot_types):
        function_map[plot_type](ax, data)
def plotA(ax, data):
    pass

def plotB(ax, data):
    pass

def dispatcher(data, list_of_plot_types):
    function_map = {'A': plotA, 'B': plotB}
    fig, list_of_axes = plt.subplots(1, len(list_of_plot_types))

    for ax, plot_type in zip(list_of_axes, list_of_plot_types):
        function_map[plot_type](ax, data)