Вы можете управлять соотношением сторон с помощью ax.set_aspect
:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax=fig.add_subplot(1,1,1)
ax.set_aspect(0.3)
x,y=np.random.random((2,100))
plt.scatter(x,y)
Другой способ установить соотношение сторон (уже упоминавшийся jterrace ) - это использовать параметр figsize
в plt.figure
: например, fig = plt.figure(figsize=(3,1))
. Однако два метода немного отличаются: фигура может содержать много осей. figsize
контролирует соотношение сторон для всей фигуры, тогда как set_aspect
контролирует соотношение сторон для конкретной оси.
Далее вы можете обрезать неиспользуемое пространство вокруг участка с помощью bbox_inches='tight'
:
plt.savefig('/tmp/test.png', bbox_inches='tight')
Если вы хотите избавиться от лишнего пустого пространства из-за автоматического выбора matplotlib x-range и y-range, вы можете вручную установить их с помощью ax.set_xlim
и ax.set_ylim
:
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)