python - 在更大的图中嵌入 matplotlib 图

标签 python matplotlib

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

enter image description here

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

enter image description here

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

关于最佳选择路线有什么建议吗?我推测使用 axes_grid 是否是解决方案,但对我来说它似乎相当干净且与调用者无关。有什么建议吗?

最佳答案

最好的解决方案是将图形布局逻辑与绘图逻辑分开。像这样编写您的绘图代码:

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

因此,现在转换数据 -> 图像的代码将数据作为参数以及它应该在何处绘制该数据。

如果你只想做一个,很简单,如果你想做一个 3x3 网格,你只需要生成布局,然后遍历轴集 + 数据。

您建议的方式(从您的绘图例程中返回一个对象)在 matplotlib 中会非常困难,内部结构过于紧密。

关于python - 在更大的图中嵌入 matplotlib 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18980915/

相关文章:

python - 使用 matplotlib savefig 保存文件对象,从多个 svg 图形创建 tar 文件

python - 矢量轴但 Matplotlib 散点图的栅格点

python - 用于编辑从 numpy savez 函数生成的 zip 文件的 Linux 命令

python - 如何在Python中的for循环内仅获取嵌套if/else语句的一个else语句?

python - 为什么使用此脚本在 Maya Python 中删除UI 不起作用?

python - 关于在我的代码中更快地执行 for/if 语句的建议?

python - 带有 FancyArrowPatch 的虚线

python - matplotlib 设置自己的轴值

python - 如何仅注释堆积条形图的一个类别

python - 我在 (y) 函数中遇到 for(x) 问题