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:
Jak widać, liczba jest większa ...
Odpowiedzi:
1 dla odpowiedzi № 1Moż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: