2016-03-08 9 views
5

W moim bieżącym iPythonie, wątki matplotlib są wyświetlane w linii. Chciałem wyświetlić obrazy o określonych rozmiarach pikseli, ponieważ zwykle pracuję tylko z pikselami i niczego nie drukuję.IPython i Inline Matplotlib Rozmiary rysunku

Mój ekran PPI jest 208, więc wpadłem te 2 kawałki kodu:

plt.figure(figsize=(2000/float(208), 1000/float(208)), dpi=208) 
# other code here... 
plt.savefig('my_fig.png', dpi=208) 

Co jestem zagubiony jest taka: Kiedy zbadać my_fig.png, to w rzeczywistości 2000 pikseli o 1000 pikselach To jest to czego chcę. Również zgodnie z https://stackoverflow.com/a/7912007/582917 ustawienia DPI dla renderowania do urządzenia wyświetlającego i renderowania pliku mają różne ustawienia domyślne. Dlatego muszę dodać także dpi=208 do funkcji plt.savefig.

Jednak obraz wyświetlany na komputerze przenośnym iPython, który jest w przeglądarce, jest znacznie mniejszy. Używając mojej linijki przeglądarki, jest to około 600 na 300 pikseli.

Przy użyciu tych samych DPI dla obu funkcji, dlaczego wstawiany obraz w notesie iPython jest tak mały, a zapisany obraz ma odpowiednią rozdzielczość, jakiej chcę?

Zauważ, że używam iPythona w Virtualboksie (również bezgłowego), nie jestem pewien, czy może to spowodować jakiekolwiek różnice.

Po kilku próbach i błędach, aby uzyskać właściwy rozmiar do renderowania wbudowanego, rozdzielczość dpi musi wynosić 58. Ale nawet wtedy obrazy generowane w wierszu nie pasują dokładnie do podanej liczby pikseli. Zawsze jest to + - 10 do 20 pikseli.

+0

masz rozdzielczość sam ekran/definicja na VM? – pltrdy

+0

Maszyna wirtualna jest bezgłowna. – CMCDragonkai

Odpowiedz

0

Może to wynikać z faktu, że domyślnie %matplotlib inline przejdzie bbox_inches='tight' do plt.figure(...). spróbuj wykonać następujące czynności,

Po wywołaniu %matplotlib inline, zrobić %config InlineBackend.print_figure_kwargs = {'bbox_inches':None} następnie utworzyć wykres. Oto, co zrobił dla mnie:

Przed Before

Po After

Powiązane problemy