Краткий ответ: используйте аргумент ключевого слова 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-направление, второй элемент, как ширина в направлении у.
Это относится ко всей фигуре;вам нужно настроить его, чтобы получить подходящую форму для ваших участков.
![enter image description here](https://i.stack.imgur.com/faF2V.png)
Более длинный ответ: .set_aspect(num)
устанавливаетОтношение оси Y к оси X для каждого графика.
Итак, когда вы использовали .set_aspect(.5)
на каждой оси, вы сказали matplotlib
перенастроить каждую ось так, чтобы ось Y была в 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)
Вот почему ваши графики имеют разные формы;пределы оси отличаются , но вы установили размер фигур на обоих графиках равным одинаковых .
![enter image description here](https://i.stack.imgur.com/eioNx.png)