2015-07-17 16 views
7

Mam wykres matplotlib w pythonie z 3 partplots, all in 1 column.Odstęp między niektórymi wątkami, ale nie wszystkimi

Obecnie sterowanie wysokość każdego poletko z:

gridspec.GridSpec(3, 1, height_ratios=[1, 3, 3]) 

że nie mają odstęp za pomocą:

plt.subplots_adjust(hspace=0.0) 

Ale że chce umieścić pewien odstęp między rzędzie 2 i jedynie 3.

W jednym z innych odpowiedzi, czytałem, że mogę zrobić coś takiego:

gs1.update(left=0.05, right=0.48, wspace=0) 

Ale ja naprawdę nie rozumiem, co się dzieje. Czy mógłby mi ktoś podać więcej informacji?

Odpowiedz

12

Po wywołaniu aktualizacji parametry te są stosowane do wszystkich podpól w tym konkretnym siatce siatki. Jeśli chcesz używać różnych parametrów dla różnych podpól, możesz utworzyć wiele parametrów siatki. Musisz jednak upewnić się, że są one poprawne i nie pokrywają się. Jednym ze sposobów na to jest zagnieżdżony gridspecs. Ponieważ całkowita wysokość dwóch dolnych powierzchni jest 6-krotnie większa niż górna, zewnętrzna siatka siatki będzie miała stosunek wysokości [1, 6].

import matplotlib.pyplot as plt 
import matplotlib.gridspec as gridspec 


def do_stuff(cell): #just so the plots show up 
    ax = plt.subplot(cell) 
    ax.plot() 
    ax.get_xaxis().set_visible(False) 
    ax.get_yaxis().set_visible(False) 
plt.subplots_adjust(hspace=0.0) 
#make outer gridspec 
outer = gridspec.GridSpec(2, 1, height_ratios = [1, 6]) 
#make nested gridspecs 
gs1 = gridspec.GridSpecFromSubplotSpec(1, 1, subplot_spec = outer[0]) 
gs2 = gridspec.GridSpecFromSubplotSpec(2, 1, subplot_spec = outer[1], hspace = .05) 
for cell in gs1: 
    do_stuff(cell) 
for cell in gs2: 
    do_stuff(cell) 
plt.show() 

Plot with three subplots

+0

ten pracował dla mnie, może potwierdzić – jimh

Powiązane problemy