Я хотел бы сделать оси matplotlib квадратными и сделать это, растягивая или сжимая масштаб осей, а не изменяя пределы осей. Как это может быть сделано?
(Другими словами, я ищу аналог команды MATLAB на Python axis square
.)
До сих пор я пробовал:
plt.gca().set_aspect('equal')
. Похоже, что это уравнивает масштабирование, а не экранную длину осей x и y, что соответствует документации matplotlib . Оси полученного графика не являются квадратными, если только ymax - ymin = xmax - xmin, где xmin, xmax, ymin и ymax — пределы осей (и это равенство не выполняется для моего графика).
plt.axis('equal')
и plt.axis('scaled')
. Кажется, они дают результаты, показанные и описанные в этом посте. В целом оси полученного графика не прямоугольные.
Если я правильно понимаю, то я думаю, что вы ищете ax.set_box_aspect(1) (также см. здесь), который даст вам квадратные оси с теми же ограничениями, что и исходный график.
Пример:
import numpy as np
import matplotlib.pyplot as plt
plt.close("all")
x = np.linspace(0, 50, 200)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_box_aspect(1)
fig.tight_layout()