Как убрать пробел внизу графика matplotlib? - PullRequest
7 голосов
/ 09 августа 2011

Я просмотрел руководство пользователя matplotlib и, похоже, не могу найти способ удалить пустое пространство, которое генерируется внизу моего графика.

fig = plt.figure(1,figsize=(5,10))
axis = fig.add_subplot(211, autoscale_on=False,xlim=(1,10),ylim=(0,1))

Являются ли конфигурации, которые я использую на графике,Я пытался использовать frameon = False, но ничего не заметил.Я хотел бы, чтобы график занимал весь размер выходного изображения.

Вот фотография: Notice that half the graph is half white space at the bottom.

Я хочу удалить все это пустое пространство.Оба предоставленных ответа не делают этого ... я что-то упускаю?

Ответы [ 5 ]

10 голосов
/ 10 августа 2011

Вы создаете пространство для второго сюжета и не используете его. Линия

axis = fig.add_subplot(211, autoscale_on=False,xlim=(1,10),ylim=(0,1))

добавляет подпункт к рисунку, но 211 означает «два графика высотой на один график шириной, позиция 1». Вы можете добавить второй график ниже текущего с другим вызовом субплота, передавая `212 '(позиция 2).

Чтобы создать отдельный подзаговор и устранить проблему, измените свой add_subplot вызов на:

axis = fig.add_subplot(111, autoscale_on=False,xlim=(1,10),ylim=(0,1))

111 означает один за другим графики, первая позиция.

4 голосов
/ 09 августа 2011

Если вы сохраняете вывод в файл, вы можете использовать bbox_inches='tight':

import matplotlib.pyplot as plt
import numpy as np
fig=plt.figure(1,figsize=(5,10))
axis = fig.add_subplot(211, autoscale_on=False, xlim=(1,10), ylim=(0,1))
N=100
x = np.linspace(1,10, N)
y = np.cumsum(np.random.random(N)-0.5)
y -= y.min()
y /= y.max()
plt.plot(x,y)
plt.savefig('test.png', bbox_inches='tight', pad_inches=0.0)
3 голосов
/ 10 августа 2011

Я не совсем уверен, что ты имеешь в виду.Если вы хотите контролировать положение и размер вашего подзаговора, попробуйте использовать add_axes ([left, bottom, width, height]) .Ниже приведен пример кода, я установил границу черного цвета, чтобы убедиться, что вы видите его четко:

0 голосов
/ 10 августа 2011

Я обычно удаляю все пробелы в моих фигурах, удаляя рамку, окружающую график.Это делается с помощью команды frameon=False, определенной здесь .

fig = plt.figure(1,figsize=(5,10),frameon=False)
axis = fig.add_subplot(211, autoscale_on=False,xlim=(1,10),ylim=(0,1))
0 голосов
/ 09 августа 2011

Вам, вероятно, следует использовать функцию subplots_adjust ().Я обнаружил, что

fig.subplots_adjust (bottom = 0.06)

, кажется, работает лучше всего для меня.Это оставляет достаточно места внизу для отметок и метки оси.Если вы хотите, чтобы график занимал весь вывод, просто установите нижнее значение на меньшее число.

Примечание: subplots_adjust () также может управлять пробелами сверху, слева и справа, а такжерасстояние между участками.Координаты являются единицами всей фигуры.То есть (0,0) - это левый нижний угол, а (1,1) - это верхний левый.

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