5

我正在编写一堆用于处理天文数据的脚本和函数。我有一组星系,我想在 3 面板图中绘制一些不同的属性。我在这里有一个布局示例:

在此处输入图像描述

现在,这不是问题。但有时,我只想为单个星系创建这个情节。在其他情况下,我想制作一个更大的图,其中包含子图,每个子图都由三个+窗格结构组成,例如这个模型:

在此处输入图像描述

为了我的代码的模块化和可重用性,我想做一些事情,让我的函数返回一个matplotlib.figure.Figure对象,然后让调用者 - 函数或交互式会话 - 决定是对象show()还是savefig嵌入它更大的数字。但我似乎在文档或其他地方找不到任何暗示,这似乎不是人们经常做的事情。

关于什么是最好的道路有什么建议吗?我推测 using 是否axes_grid会是解决方案,但对我来说似乎不太干净且与调用者无关。有什么建议么?

4

1 回答 1

3

最好的解决方案是将图形布局逻辑与绘图逻辑分开。编写您的绘图代码,如下所示:

 def three_panel_plot(data, ploting_args, ax1, ax2, ax3):
     # what you do to plot

所以现在转换 data -> images 的代码将数据作为参数,以及它应该在哪里绘制数据。

如果你只想做一个,这很容易,如果你想做一个 3x3 的网格,你只需要生成布局,然后在轴集 + 数据上循环。

你建议的方式(从你的绘图程序中返回一个对象)在 matplotlib 中会非常困难,内部连接太紧密了。

于 2013-09-24T12:51:43.307 回答