matplotlib, как обрезать участок, чтобы убрать всю белую рамку / отступы? - PullRequest
0 голосов
/ 09 ноября 2018

Допустим, я делаю трехмерный точечный график с помощью matplotlib. Я использую код, указанный здесь: https://matplotlib.org/2.1.1/gallery/mplot3d/scatter3d.html

Для моих целей мне нужно убрать топоры, щекотки и т. Д. Итак, я делаю это:

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.set_xticklabels([])
ax.set_yticklabels([])
ax.set_zticklabels([])
ax.set_axis_off()

Я также убрал все метки осей. Чтобы удалить белый отступ, я сохраняю рисунок следующим образом:

plt.savefig("test.png", bbox_inches = 'tight', pad_inches = 0)
plt.show()

Но все же есть белые отступы, сгенерированная фигура выглядит так: enter image description here

Но мне нужна фигура, ограничивающая только ту часть фигуры, где находятся все точки данных, например:

enter image description here

1 Ответ

0 голосов
/ 09 ноября 2018

Используйте subplots_adjust. Это удалит любое пространство вокруг (и между, если было несколько) осей, поэтому «мертвое пространство фигуры» не будет.

fig, ax = plt.subplots()
ax.scatter(np.random.random(100), np.random.random(100))
ax.set_axis_off()
fig.subplots_adjust(left=0, bottom=0, right=1, top=1, wspace=0, hspace=0)
fig.savefig('test.png', edgecolor='r', lw=2)  # red line to highlight extent of figure

enter image description here

против subplots_adjust

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...