如何显示一个具有两个轴的图,使得顶部轴和右侧轴的纵横方向是“相等的”。
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中使用adjustable关键字:
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])
它产生:
我想删除额外的空间,以右边和左边的情节
2条答案
按热度按时间o2g1uqev1#
使用两个不同的双轴来获得两组独立的轴似乎过于复杂。如果目标是创建一个正方形图,图的每一侧都有一个轴,您可以使用两个
axes
,两者都在相同的位置,但比例不同。然后可以将两者设置为具有相等的长宽比。oogrdqng2#
更新给那些在2023年寻找正方形地块面积的人,他们在set_aspect,equal,datalim和adjustables上没有太多的运气:
您可以直接设置框方面:
这对我的孪生轴和对数图都有效,其中
ax.set_aspect('equal', 'box')
失败是因为孪生轴上不允许它,而ax.set_aspect('equal', 'datalim')
失败是因为NaN或INF限制(可能是由于半逻辑规模)(In在这种特殊情况下,你可能必须分别为ax和ax2做这件事)