如何使用 twinx 并仍然得到方形图
How to use twinx and still get square plot
如何显示双轴图,使顶轴和右轴的纵横比为 'equal'。例如,下面的代码将生成一个正方形图
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])
产生:
我想删除绘图左右两侧多余的space
使用两个不同的双轴来获得两组独立的轴似乎过于复杂。如果目标是创建一个在图的每一侧都有一个轴的正方形图,您可以使用两个 axes
,它们都在相同的位置但具有不同的比例。然后可以将两者设置为具有相等的纵横比。
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()
如何显示双轴图,使顶轴和右轴的纵横比为 'equal'。例如,下面的代码将生成一个正方形图
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])
产生:
我想删除绘图左右两侧多余的space
使用两个不同的双轴来获得两组独立的轴似乎过于复杂。如果目标是创建一个在图的每一侧都有一个轴的正方形图,您可以使用两个 axes
,它们都在相同的位置但具有不同的比例。然后可以将两者设置为具有相等的纵横比。
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()