我需要在图中添加两个子图.一个子图需要大约是第二个(相同高度)的三倍.我使用GridSpec和colspan论证完成了这个,但我想这样做,figure所以我可以保存为PDF.我可以使用figsize构造函数中的参数调整第一个数字,但是如何更改第二个图的大小?
我想使用多个轴创建一个方形图,make_axes_locateable如matplotlib文档中所示.然而,虽然这适用于x和y数据具有相同范围的图,但是当范围是不同的数量级时,它不起作用.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
x = np.random.normal(512, 112, 240)
y = np.random.normal(0.5, 0.1, 240)
_, ax = plt.subplots()
divider = make_axes_locatable(ax)
xhax = divider.append_axes("top", size=1, pad=0.1, sharex=ax)
yhax = divider.append_axes("right", size=1, pad=0.1, sharey=ax)
ax.scatter(x, y)
xhax.hist(x)
yhax.hist(y, orientation="horizontal")
x0,x1 = ax.get_xlim()
y0,y1 = ax.get_ylim()
ax.set_aspect(abs(x1-x0)/abs(y1-y0))
plt.show()
Run Code Online (Sandbox Code Playgroud)
虽然此代码使用的set_aspect答案如我如何制作matplotlib散点图方块?轴未正确修改,如下所示:
我尝试修复此问题:
ax.set_aspect(abs(x1-x0)/abs(y1-y0), share=True)
Run Code Online (Sandbox Code Playgroud)
但这导致了以下结果:
在调用scatter之后和创建两个直方图轴之前设置方面似乎没有任何效果,即使它看起来是在文档示例中完成的.当数据范围相同时,此代码可以正常工作:
更新:此问题的一个主要限制是使用make_axes_locateable而不是GridSpec在下面的评论中讨论.我正在处理的问题涉及创建绘图函数,接受Axes对象进行处理和修改,而不需要了解图中的图形或任何其他轴,如下面的代码所示:
import numpy as np
import …Run Code Online (Sandbox Code Playgroud)