使用 matplotlib 添加多个 Pull Plots

Adding multiple Pull Plots with matplot lib

我在一个有拉图的地块中工作,我将其定义为:

fig, (ax1, ax2) = aplt.ratio_plot(name=  canvasArray[kl], figsize=(800, 800), hspace=0.05)

它工作正常,但现在我需要在图像中添加另一个拉图,所以我尝试了:

fig, (ax1, ax2,ax3) = aplt.subplots(3,1,name="fig1", figsize=(850, 950))

我得到了结果图:

我尝试了一些选项,例如 .set_aspect(),但我一直收到错误 AttributeError: 'Axes' object has no attribute 'set_aspect'。我希望主图占整个地块的 2/4,拉图各占 1/2,但我对此有困难。

我在面向对象的环境中工作,所以我不知道这是否会改变一切。我正在使用使用 matplotlib 语法的 Atlasplots 包。 https://atlas-plots.readthedocs.io/en/latest/

我有个主意。 Matplotlib.pyplot 有一组参数,其中一个参数控制绘图的大小。它被称为:rcParams。这个属性在内部是一个字典,包含了很多配置。看一看:

>>> from matplotlib import pyplot as plt
>>> plt.rcParams

如果您 运行 以上代码行,您将得到 the following。是的,有很多事情,但我们有一个特定的密钥可以解决我们的问题。是"figure.figsize",如果你select这个参数是这样的:

>>> plt.rcParams["figure.figsize"] = [6.0, 4.0]

您可以自定义绘图大小。所以我认为您可以在代码的某些位置使用它,并在需要时将其重置为默认值。

要查看默认值是什么,只需 运行 即可根据键 "figure.figsize":

获取输出
>>> plt.rcParams["figure.figsize"]

[out]: ["your default", "values here"]

Update: October 1, 2021

我刚刚记得你也可以直接解压subplots(matplotlib.pyplot.subplots)和select参数,像这样:

>>> fig, ax = plt.subplots(figsize=("the size", "you want"))

我还注意到一些非常有趣的事情。如果您使用 rcParams["figure.figsize"] 来控制绘图大小,它将在整个代码中保持不变,但如果您使用更新中显示的选项,配置将仅适用于该绘图区域。这是我在这里观察到的行为。