我有一个用matplotlib绘制和保存数字的项目。由于项目本身运行良好,我最近开始重构,但有一个问题我还没有找到一个很好的解决方案。为了拆分实现和日志记录,我编写了一个日志类,它将数据传递给一个绘图类,在那里我遇到了一个问题:运行时之前的,我不知道一个日志绘图/图形中将存在多少个子图。
因此,在重构之前,我有许多不同的绘图函数和许多if语句。现在,我想把所有的东西传递给我的绘图class...but,我现在还不知道绘图类应该如何处理这些数据。
之前,我有这样的东西(在这里:对于4个子情节):
f, axarr = plt.subplots(2, 2)
axarr[0, 0].set_title("original image")
axarr[0, 0].imshow(oimg, interpolation="none", cmap="gray")
axarr[0, 1].set_title("cost data")
axarr[0, 1].plot(cost_data, ...)
(...)
当然,我可以在我的绘图类中为1,2,3,.创建6种不同的方法。子图,但我又重复了一遍。。
我是否可以以某种方式创建一个缓冲区、和,在循环或类似的东西中动态添加一个子图?
还有其他想法吗?
发布于 2016-02-21 20:50:18
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)
https://stackoverflow.com/questions/35541125
复制相似问题