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

Python 如何使用twinx并仍然获得方形图,python,matplotlib,square,Python,Matplotlib,Square,如何显示具有双轴的绘图,使顶部轴和右侧轴的方向“相等”。例如,以下代码将生成一个方形图 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和

如何显示具有双轴的绘图,使顶部轴和右侧轴的方向“相等”。例如,以下代码将生成一个方形图

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的aspect,但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])
产生:


我想删除绘图右侧和左侧的额外空间

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

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()

太好了-谢谢。我不知道你可以在同一位置使用两个轴。