Zacząłem od matplot i zarządzałem kilkoma podstawowymi wątkami, ale teraz trudno mi dowiedzieć się, jak zrobić coś, czego teraz potrzebuję :(
Moje aktualne pytanie brzmi, jak umieścić tytuł globalny i globalną legendę na figurze z wątkami pobocznymi.
Robię podploty 2x3, gdzie mam wiele różnych wykresów w różnych kolorach (około 200). Aby rozróżnić (większość) z nich napisałem coś w stylu
def style(i, total):
return dict(color=jet(i/total),
linestyle=["-", "--", "-.", ":"][i%4],
marker=["+", "*", "1", "2", "3", "4", "s"][i%7])
fig=plt.figure()
p0=fig.add_subplot(321)
for i, y in enumerate(data):
p0.plot(x, trans0(y), "-", label=i, **style(i, total))
# and more subplots with other transN functions
(masz jakieś przemyślenia na ten temat? :)) Każdy wątek cząstkowy ma tę samą funkcję stylu.
Teraz staram się uzyskać globalny tytuł dla wszystkich wątków pobocznych, a także globalną legendę, która wyjaśnia wszystkie style. Muszę również zmniejszyć czcionkę, aby pasowała do wszystkich 200 stylów (nie potrzebuję całkowicie unikalnych stylów, ale przynajmniej próbuję)
Czy ktoś może mi pomóc rozwiązać to zadanie?
źródło
Odpowiedzi:
Tytuł globalny : W nowszych wersjach matplotlib można użyć metody Figure.suptitle ()
Figure
:Alternatywnie (na podstawie poniższego komentarza @Stevena C. Howella (dziękuję!)) Użyj funkcji matplotlib.pyplot.suptitle () :
źródło
import matplotlib.pyplot as plt
sposób:, polecenie można wprowadzić po prostu jakoplt.figure(); plt.suptitle('Title centered above all subplots'); plt.subplot(231); plt.plot(data[:,0], data[:,1]);
itp ...Oprócz najobszerniejszej odpowiedzi można również chcieć przesunąć wykresy cząstkowe w dół. Oto MWE w stylu OOP:
daje:
źródło
W przypadku etykiet legendy można użyć czegoś takiego jak poniżej. Etykiety legendy to zapisane linie działki. modFreq to nazwa rzeczywistych etykiet odpowiadających liniom wykresu. Następnie trzecim parametrem jest lokalizacja legendy. Na koniec możesz przekazać dowolne argumenty, które tutaj przedstawiłem, ale potrzebujesz głównie pierwszych trzech. Powinieneś także, jeśli poprawnie ustawisz etykiety w poleceniu kreślenia. Wystarczy wywołać legendę z parametrem lokalizacji i znajduje etykiety w każdym z wierszy. Miałem większe szczęście, że stworzyłem własną legendę, jak poniżej. Wydaje się działać we wszystkich przypadkach, w których nigdy nie wydawało się, że odwrotna droga działa prawidłowo. Jeśli nie rozumiesz, daj mi znać:
Możesz także użyć nogi, aby zmienić rozmiar czcionki lub prawie dowolny parametr legendy.
Tytuł globalny, jak podano w powyższym komentarzu, można zrobić, dodając tekst za pomocą podanego linku: http://matplotlib.sourceforge.net/examples/pylab_examples/newscalarformatter_demo.html
źródło
suptitle
wydaje się być drogą do zrobienia, ale warto,figure
matransFigure
właściwość, z której możesz korzystać:źródło