Moja konfiguracja:
Linux Debian 8.3 amd64, xmonad WM, python2.7, matplotlib 1.5.1Jak ustawić tight_layout dla matplotlib wykresach po show()
Problem:
jestem podejmowania działkę, na przykład:
import matplotlib.pyplot as plt
x = xrange(10)
y1 = [i ** 2 for i in x]
y2 = [1.0/(i + 1) for i in x]
fig = plt.figure()
ax1 = plt.subplot(1, 2, 1)
ax1.plot(x, y1)
ax2 = plt.subplot(1, 2, 2)
ax2.plot(x, y2)
plt.show()
a ponieważ Używam menedżera okien dachówka, okno na matplotlib dostaje rozciągnięty do dachówki. Niestety powoduje to, że wykresy są niewielkie i układy są luźne.
Jeśli chcę "dokręcić" go trochę, klikając "Konfiguruj wątki -> Tight Układ" wykonuje zadanie. Ale to oznacza, że muszę kliknąć ikonę, a następnie na przycisk za każdym razem, gdy i ponieważ używam tego wykresu do wyświetlania danych testowych i uruchamiam go bardzo często, to jest dość denerwujące. Więc próbowałem kilka rzeczy, aby to łatwiejsze:
Co próbowałem:
nazywając
plt.tight_layout()
przedshow()
:... ax2.plot(x, y2) plt.tight_layout() plt.show()
dodanie obsługi przyciśnięcie (tak, ja po prostu naciśnij "t"):
... ax2.plot(x, y2) def kbd_handler(event): if event.key == 't': plt.tight_layout() plt.gcf().canvas.mpl_connect('key_press_event', kbd_handler) plt.show()
nazywając
tight_layout
na rysunku:ax2.plot(x, y2) fig.tight_layout() plt.show()
To wszystko zmieniło się nic, a przynajmniej wyglądał tak samo na 2 wątków w jednym rzędzie, jednak na więcej niż jeden wiersz, to sprawiło, że układ jeszcze bardziej luźne i wszystkie wątki bardzo małe.
Co Podejrzewam:
Wierzę, że problem jest związany z rozmiaru, które prawdopodobnie dzieje się po utworzeniu okna , więc tighten_layout
współpracuje z oryginalnego okna wymiarach. Gdy Window Manager zmienia rozmiar okna, układ zachowuje rozmiary poletko i mam „luźne” układ z miniaturowych wykresów ..
Pytanie
Czy istnieje sposób, aby automatycznie (lub bardzo łatwo - jak za pomocą key_press_event) dokręcić układ, nawet gdy okno zostanie zmienione natychmiast po dzwoniąc pod numer plt.show()
?
Chciałbym również wiedzieć. – user1350191
@ user1350191 Poniższa odpowiedź Thomasa zadziałała dla mnie ... –