gpt4 book ai didi

python - 如何使用 twinx 并仍然获得方形图

转载 作者:行者123 更新时间:2023-11-30 22:31:45 25 4
gpt4 key购买 nike

如何显示双轴绘图,以使上轴和右轴的长宽比“相等”。例如,以下代码将生成一个正方形图

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.set_aspect('equal')
ax.plot([0,1],[0,1])

但是一旦您使用 twinx 函数,情况就会发生变化。

ax2 = ax.twinx()
ax2.set_ylim([0,2])
ax3 = ax.twiny()
ax3.set_xlim([0,2])

在 ax2 和 ax3 上使用 set_aspect('equal') 似乎会强制其采用 ax 的方面,但 set_aspect(0.5) 似乎也没有改变任何内容。

简单地说,我希望绘图是正方形的,底部和左侧的轴从 0 到 1,顶部和右侧的轴从 0 到 2。

你能设置两个缠绕轴之间的纵横比吗?我尝试过堆叠轴:

ax3 = ax2.twiny()
ax3.set_aspect('equal')

我还尝试在 set_aspect 中使用可调整关键字:

ax.set_aspect('equal', adjustable:'box-forced')

我能得到的最接近的是:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.set_aspect('equal', adjustable='box-forced')
ax.plot([0,1],[0,1])
ax2=ax.twinx()
ax3 = ax2.twiny()
ax3.set_aspect(1, adjustable='box-forced')
ax2.set_ylim([0,2])
ax3.set_xlim([0,2])
ax.set_xlim([0,1])
ax.set_ylim([0,1])

产生:

enter image description here

我想删除绘图右侧和左侧的多余空间

最佳答案

使用两个不同的双轴来获得两组独立的轴似乎过于复杂。如果目标是创建一个方形图,该图的每一侧都有一个轴,则可以使用两个轴,它们位于相同的位置但具有不同的比例。然后可以将两者设置为具有相同的宽高比。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.set_aspect('equal')
ax.plot([0,1],[0,1])

ax2 = fig.add_axes(ax.get_position())
ax2.set_facecolor("None")
ax2.set_aspect('equal')
ax2.plot([2,0],[0,2], color="red")
ax2.tick_params(bottom=0, top=1, left=0, right=1,
labelbottom=0, labeltop=1, labelleft=0, labelright=1)

plt.show()

enter image description here

关于python - 如何使用 twinx 并仍然获得方形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45717030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com