在更大的数字中嵌入matplotlib图

时间:2013-09-24 11:53:56

标签: python matplotlib

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

enter image description here

现在,这不是问题。但有时候,我想为一个星系创造这个情节。在其他情况下,我想制作一个由子图组成的更大的图,每个子图由三个+窗格结构组成,就像这个模型一样:

enter image description here

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

关于什么是最佳路径的任何建议?我推测使用axes_grid是否会成为解决方案,但它似乎并非完全干净且与调用者无关。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

最佳解决方案是将图形布局逻辑与绘图逻辑分开。写下您的绘图代码:

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

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

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

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