Вам необходимо установить положение осей, чтобы заполнить фигуру.Если вы создаете свою фигуру и график с помощью
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.gca()
ax.plot(some_x_data, some_y_data)
, вам необходимо добавить следующую строку, чтобы заполнить фигуру осями:
ax.set_position([0, 0, 1, 1], which='both')
Это устанавливает местоположение осей относительно фигурыразмер следующим образом:
[left, bottom, width, height]
Чтобы полностью заполнить фигуру, используйте [0, 0, 1, 1]
, как показано выше.
Итак, взяв код, он должен выглядеть следующим образом (используя fill_figure
bool для проверки):
def demo_tight_layout(w=10, h=6, axisoff=False, removeticks=False, fill_figure=False):
fig,ax = plt.subplots()
fig.set_facecolor((0.8, 0.8, 0.8))
rect = patches.Rectangle((-w/2, -h/2), w, h, color='#00ffff', alpha=0.5)
ax.add_patch(rect)
ax.plot([-w/2,w/2], [-h/2,h/2])
ax.plot([-w/2,w/2], [h/2,-h/2])
ax.set_ylabel("ylabel")
ax.margins(0)
_texts = []
if axisoff:
ax.set_axis_off()
_texts.append("axisoff")
if removeticks:
ax.set_xticks([])
ax.set_yticks([])
ax.set_ylabel("")
_texts.append("removeticks")
fig.text(0.5, 0.6, " ".join(_texts))
fig.tight_layout(pad=0)
if fill_figure:
ax.set_position([0, 0, 1, 1], which='both')
plt.show()
return fig, ax, text
ax.set_position
должно быть после fig.tight_layout
.Если нужен заголовок фигуры, прямого способа сделать это не существует.Этого, к несчастью, не избежать.Вам необходимо настроить параметры height
вручную, чтобы заголовок соответствовал рисунку, например с помощью:
ax.set_position([0, 0, 1, .9], which='both')