/ / Subplots: tight_layout zmienia rozmiar figury - python, subplot

Subplots: tight_layout zmienia rozmiar postaci - python, subplot

Zmiana pionowej odległości między dwoma wątkami za pomocą tight_layout (h_pad = -1) zmienia całkowitą wartość liczbową. Jak zdefiniować figurkę za pomocą tight_layout?

Oto kod:

#define figure
pl.figure(figsize=(10, 6.25))

ax1=subplot(211)
img=pl.imshow(np.random.random((10,50)), interpolation="none")
ax1.set_xticklabels(()) #hides the tickslabels of the first plot

subplot(212)
x=linspace(0,50)
pl.plot(x,x,"k-")
xlim( ax1.get_xlim() ) #same x-axis for both plots

A oto wyniki:

Jeśli piszę

pl.tight_layout(h_pad=-2)

w ostatniej linii, otrzymuję to:

wprowadź opis obrazu tutaj

Jak widać, liczba jest większa ...

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz użyć obiektu GridSpec do kontrolowania dokładnie proporcji szerokości i wysokości, w zależności od odpowiedzi w tym wątku i udokumentowane tutaj.

Eksperymentując z twoim kodem, mógłbym stworzyć coś, czego chcesz, używając a height_ratio która przypisuje dwa razy więcej miejsca do górnej subploty i zwiększa wartość h_pad parametr do tight_layout połączenie. To nie brzmi całkiem poprawnie, ale może możesz to zmienić dalej ...

import numpy as np
from matplotlib.pyplot import *
import matplotlib.pyplot as pl
import matplotlib.gridspec as gridspec

#define figure
fig = pl.figure(figsize=(10, 6.25))

gs = gridspec.GridSpec(2, 1, height_ratios=[2,1])

ax1=subplot(gs[0])
img=pl.imshow(np.random.random((10,50)), interpolation="none")
ax1.set_xticklabels(()) #hides the tickslabels of the first plot

ax2=subplot(gs[1])
x=np.linspace(0,50)
ax2.plot(x,x,"k-")
xlim( ax1.get_xlim() ) #same x-axis for both plots
fig.tight_layout(h_pad=-5)
show()

Były inne problemy, takie jak poprawianie importu, dodawanie numpy i drukowanie do ax2 zamiast bezpośrednio z pl. Wynik, który widzę jest następujący:

Poprawiona figura