Я пытался установить равные пропорции данных в matplotlib с помощью ax.set_aspect('equal', 'datalim') (он же ax.axis('equal')), сохраняя при этом нижние границы/пределы, то есть привязывая одну сторону данных и расширяя пределы данных только на другой стороне.
В моем случае данные всегда положительны, поэтому я хотел бы расширить только верхняя/правая сторона. По умолчанию set_aspect всегда симметрично расширяет больший предел данных, центрируя данные на графике. set_aspect имеет параметр привязки, который, как я ожидаю, будет делать именно то, что я надеюсь, даже без ручной установки осей, путем привязки к SW. Хотя это прекрасно работает с set_aspect(adjustable='box'), это не имеет никакого эффекта с set_aspect(adjustable='datalim').
Вот простой пример того, чего я хотел бы, что я пробовал и что не сработало: (используя неквадратные графики, чтобы сделать разницу более ясной)
Я пытался установить равные пропорции данных в matplotlib с помощью ax.set_aspect('equal', 'datalim') (он же ax.axis('equal')), сохраняя при этом нижние границы/пределы, то есть привязывая одну сторону данных и расширяя пределы данных только на другой стороне. В моем случае данные всегда положительны, поэтому я хотел бы расширить только верхняя/правая сторона. По умолчанию set_aspect всегда симметрично расширяет больший предел данных, центрируя данные на графике. set_aspect имеет параметр привязки, который, как я ожидаю, будет делать именно то, что я надеюсь, даже без ручной установки осей, путем привязки к SW. Хотя это прекрасно работает с set_aspect(adjustable='box'), это не имеет никакого эффекта с set_aspect(adjustable='datalim'). Вот простой пример того, чего я хотел бы, что я пробовал и что не сработало: (используя неквадратные графики, чтобы сделать разницу более ясной) [code]fig, axs = plt.subplots(2, 3, figsize = (3*6, 2*4))
# A correlation we want to realise is not exactly y=x by setting aspect x = np.linspace(0, 10, 100) y = 0.7*x+0.1*x*np.random.normal(size=100)
# Plot data and add y=x line for perspective for ax in axs.ravel(): ax.scatter(x, y) ax.axline((0, 0), (1, 1), color = 'gray', linestyle = '--')