matplotlib:使用append_axes时,如何指定要添加子面板的坐标轴?

10 投票
1 回答
2166 浏览
提问于 2025-04-17 05:41

我在看Matplotlib画图库里的一个例子,叫做“散点图和直方图”

现在,x轴和y轴的子图分别在顶部和右侧,也就是:

divider = make_axes_locatable(axScatter)
axHistx = divider.append_axes("top", 1.2, pad=0.1, sharex=axScatter)
axHisty = divider.append_axes("right", 1.2, pad=0.1, sharey=axScatter)

但是,如果我把子图的位置改成:

divider = make_axes_locatable(axScatter)
axHistx = divider.append_axes("bottom", 1.2, pad=0.1, sharex=axScatter)
axHisty = divider.append_axes("right", 1.2, pad=0.1, sharey=axScatter)

也就是说,把x轴的子图移到下面,这样append_axes就会把y轴的子图加到x轴子图的右边,而不是散点图的右边。(我本来想上传图片的,但我还没有足够的声望来发图片...真让人郁闷!)

我该怎么告诉append_axes,我想把y轴的子图加到包含散点图的“主坐标轴”的右边呢?我猜我需要在某个地方再次指定axScatter这个对象(虽然我以为divider = make_axes_locatable(axScatter)就是为了这个?)或者我猜divider已经在窗口面板里设置了一个网格,我需要告诉append_axes哪个单元格包含主坐标轴。

谢谢,

亚历克斯

1 个回答

2

你创建 axHistyaxHistx 的顺序似乎很重要。如果你把最后两个语句的顺序调换一下,就能得到想要的效果:

divider = make_axes_locatable(axScatter)
axHisty = divider.append_axes("right", 1.2, pad=0.1,  sharey=axScatter)
axHistx = divider.append_axes("bottom", 1.2, pad=0.1, sharex=axScatter)

这看起来确实像是个错误。

撰写回答