我分开了两件事。
figure.tight_layout
将扩展我的当前轴
axes.aspect('equal')
将在x和y上保持相同的比例。
但是当我使用它们时,我得到方轴视图,我希望它能够扩展。 通过保持相同的比例,我的意思是在x和y轴上从0到1的距离相同。 有没有办法让它成真?保持相同的比例并扩展到完整的数字(不仅是一个正方形) 答案应该适用于自动缩放
答案 0 :(得分:1)
可能没有那么笨拙的方式,但至少你可以手动完成。一个非常简单的例子:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([0,1],[1,0])
ax.set_aspect(1)
ax.set_xlim(0, 1.5)
创建
尊重宽高比。
如果您希望tight_layout
提供自动缩放功能,那么您必须自己做一些数学运算:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([0,1],[1,0])
fig.tight_layout()
# capture the axis positioning in pixels
bb = fig.transFigure.transform(ax.get_position())
x0, y0 = bb[0]
x1, y1 = bb[1]
width = x1 - x0
height = y1 - y0
# set the aspect ratio
ax.set_aspect(1)
# calculate the aspect ratio of the plot
plot_aspect = width / height
# get the axis limits in data coordinates
ax0, ax1 = ax.get_xlim()
ay0, ay1 = ax.get_ylim()
awidth = ax1 - ax0
aheight = ay1 - ay0
# calculate the plot aspect
data_aspect = awidth / aheight
# check which one needs to be corrected
if data_aspect < plot_aspect:
ax.set_xlim(ax0, ax0 + plot_aspect * aheight)
else:
ax.set_ylim(ay0, ay0 + awidth / plot_aspect)
当然,您可以按照您想要的任何方式设置xlim
和ylim
,例如,您可能希望在比例的任何一端添加等量的空格。
答案 1 :(得分:0)