简短回答:制作子图时使用 Figsize 关键字参数:
import numpy as np
import matplotlib.pyplot as plt
xdata = np.arange(0,2,.01)
ydata1 = xdata
ydata2 = xdata ** 2
fig = plt.figure(figsize=(10,6))
ax = fig.subplots(1,2)
ax[0].plot(xdata,ydata1)
ax[1].plot(xdata,ydata2)
# Squares
ax[0].plot([0,1,1,0],[0,0,1,1])
ax[1].plot([0,1,1,0],[0,0,1,1])
plt.show(fig)
figsize
是一个以英寸为单位的元组,第一个元素作为 x 方向的宽度,第二个元素作为 y 方向的宽度。
适用于整个人物;您需要调整它以获得适合您的子图的形状。
更长的答案: .set_aspect(num)
设置每个图的 y 轴与 x 轴比率。
所以,当你使用.set_aspect(.5)
在每个轴上,你告诉matplotlib
重新配置每个轴,使 y 轴是 x 轴的 0.5 倍。这意味着 1x1 的正方形实际上在每个图上看起来都像一个矩形:
import numpy as np
import matplotlib.pyplot as plt
xdata = np.arange(0,2,.01)
ydata1 = xdata
ydata2 = xdata ** 2
fig, ax = plt.subplots(1,2)
ax[0].plot(xdata,ydata1)
ax[1].plot(xdata,ydata2)
# Squares
ax[0].plot([0,1,1,0],[0,0,1,1])
ax[1].plot([0,1,1,0],[0,0,1,1])
ax[0].set_aspect(.5)
ax[1].set_aspect(.5)
plt.show(fig)
这就是为什么你的情节有不同的形状;轴限制是不同的,但您已将两个图上的形状大小设置为the same.