2012-05-10 4 views
0

Я видел много сообщений и ответов онлайн, пытаясь ответить на этот вопрос.
Однако с использованием bbox_inches = 'tight' легенда исчезает.Как удалить место в верхней части участка - matplotlib

Это одна из моих фигур: enter image description here

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

Кто-нибудь знает, как удалить хотя бы верхнее белое пространство?

Большое спасибо!

ответ

1

Вы пытались использовать subplots_adjust()? См., Например, ответ @DaveP на этот вопрос: Reduce left and right margins in matplotlib plot

Также обратите внимание на ответ @Tian Chu на тот же вопрос.

EDIT: Это работает для меня:

import matplotlib.pyplot as plt 
fig=plt.figure() 
ax=fig.add_subplot(111) 
ax.plot([1,2,3],[5,6,7],'gs-') 
plt.subplots_adjust(top=0.99, right=0.99) 
plt.show() 
+0

Да, я видел этот ответ, но, возможно, я использовал неправильные значения (они были меньше, чем те, которые содержатся в ответе), потому что половина моего сюжета исчезла. Я попробую еще раз и дам вам знать – pavid

+1

@pavid: в комментарии от @drootang есть возможная информация, аргументы 'subplots_adjust' - это значения, присвоенные параметрам: чтобы верхний край' 5% 'от Размер фигуры используется 'top = 0.95' и т. д. –

+0

Хорошо, я думал, что это была проблема, я использовал 0.05 и т. д. – pavid

1

Обычно я не использую функцию bbox_inches = 'tight', так как она не работает очень надежно, как вы уже узнали. Я бы предпочел создать PDF с ограничениями, а затем обрезать их с помощью внешних инструментов. Для того, чтобы сделать это бесшовные из питона, я использую

os.system('pdfcrop %s %s &> /dev/null &'%(pdf_in, pdf_out)) 

Здесь pdf_in является PDF вы получены из Matplotlib и pdf_out будет ваш конечный результат.

+0

Вы знаете, если это возможно, для достижения этой цели с изображением? Я пытаюсь создать автоматические изображения. – pavid

+0

Что вы подразумеваете под «изображением»? Формат на основе пикселей? Стратегия, конечно, работает с любым форматом, если у вас есть внешняя программа, выполняющая обрезку. www.imagemagick.org может помочь с этим ... –

+0

@pavid В дополнение к pdfcrop для pdf, обрезка PNG так же проста, как convert -trim FOO.png с использованием imagemagick. Это можно обрабатывать «автоматически», используя вызов os.system, если хотите. – Hooked