如何在python中以规范化坐标绘制绘图?

如何在python中以规范化坐标绘制绘图?,python,matplotlib,Python,Matplotlib,我尝试在2x2或1x4网格中绘制四组图。每一组都有三个以上的面板,比如说,一个侧面有x轴和y轴直方图的散点图 我不想为所有12个绘图设置轴,而是想将画布分成4个部分,然后分别划分每个部分。比如说, def plot_subset(): # these coords are normalized to this subset of plots pos_axScatter=[0.10, 0.10, 0.65, 0.65] pos_axHistx = [0.10, 0.75,

我尝试在2x2或1x4网格中绘制四组图。每一组都有三个以上的面板,比如说,一个侧面有x轴和y轴直方图的散点图

我不想为所有12个绘图设置轴,而是想将画布分成4个部分,然后分别划分每个部分。比如说,

def plot_subset():
    # these coords are normalized to this subset of plots
    pos_axScatter=[0.10, 0.10, 0.65, 0.65]
    pos_axHistx = [0.10, 0.75, 0.65, 0.20]
    pos_axHisty = [0.75, 0.10, 0.20, 0.20]

    axScatter = plt.axes(pos_axScatter)
    axHistx = plt.axes(pos_axHistx)
    axHisty = plt.axes(pos_axHisty)

def main():
    # need to divide the canvas to a 2x2 grid
    plot_subset(1)
    plot_subset(2)
    plot_subset(3)
    plot_subset(4)

    plt.show()

我尝试过GridSpec和子图,但找不到一种方法使plot_subset()在规范化空间中工作。任何帮助都将不胜感激

您可以使用
BboxTransformTo()
执行此操作:

from matplotlib import transforms

fig = plt.figure(figsize=(16, 4))

fig.subplots_adjust(0.05, 0.05, 0.95, 0.95, 0.04, 0.04)

gs1 = plt.GridSpec(1, 4)
gs2 = plt.GridSpec(4, 4)

for i in range(4):
    bbox = gs1[0, i].get_position(fig)
    t = transforms.BboxTransformTo(bbox)

    fig.add_axes(t.transform_bbox(gs2[:3, :3].get_position(fig)))
    fig.add_axes(t.transform_bbox(gs2[3, :3].get_position(fig)))
    fig.add_axes(t.transform_bbox(gs2[:3, 3].get_position(fig)))
输出:


添加一点数据,并将其转化为完整的工作示例,以便您可以解释出现了什么问题。现在看来你应该跟着做,然后设定轴的限制。我不太明白你的问题,我想这可能是你想要的。谢谢!正是我所想的。