Jak mogę umieścić tekst w lewym górnym (lub prawym górnym) rogu figury matplotlib, np. Tam, gdzie byłaby legenda w lewym górnym rogu, lub na górze wykresu, ale w lewym górnym rogu? Np. Jeśli jest to plt.scatter (), to coś, co będzie w kwadracie scatter, umieść w lewym górnym rogu.
Chciałbym to zrobić bez idealnej znajomości na przykład skali wykreślanego wykresu rozrzutu, ponieważ zmieni się on ze zbioru danych do zbioru danych. Chcę tylko, żeby tekst był mniej więcej w lewym górnym rogu lub mniej więcej w prawym górnym rogu. W przypadku pozycjonowania typu legendy i tak nie powinien on nakładać się na żadne punkty wykresu punktowego.
dzięki!
text
iax.transAxes
) nie jest wśród nich.Odpowiedzi:
Możesz użyć
text
.text
współrzędne można podać względem osi, więc pozycja tekstu będzie niezależna od rozmiaru wykresu:Zapobieganie kolidowaniu tekstu z dowolnym punktem rozproszenia jest trudniejsze. Łatwiejszą metodą jest ustawienie wartości y_axis (ymax in
ylim((ymin,ymax))
) na wartość nieco wyższą niż maksymalna współrzędna y punktów. W ten sposób zawsze będziesz mieć wolne miejsce na tekst.EDYCJA: tutaj masz przykład:
Parametry ha i va określają wyrównanie tekstu względem punktu wstawiania. to znaczy. ha = 'left' to dobry zestaw, aby zapobiec wychodzeniu długiego tekstu z lewej osi, gdy ramka jest zmniejszana (zwężana) ręcznie.
źródło
from pylab import figure, text, scatter, show
Kod w odpowiedzi został wykonany w konsoli ipython w trybie pylab, gdzie jawne importy nie były konieczne. W czystym środowisku musisz zaimportować powyższe ishow()
wyświetlić działkęJednym z rozwiązań byłoby użycie tej
plt.legend
funkcji, nawet jeśli nie chcesz prawdziwej legendy. Możesz określić położenie pola legendy, używającloc
terminu kluczowania. Więcej informacji można znaleźć na tej stronie, ale zamieściłem również przykład pokazujący, jak umieścić legendę:Zauważ, że ponieważ
loc=2
legenda znajduje się w lewym górnym rogu wykresu. A jeśli tekst nakłada się na wykres, możesz go zmniejszyć, używająclegend.fontsize
, co spowoduje zmniejszenie legendy.źródło
matplotlib
różni się nieco od momentu opublikowania oryginalnej odpowiedzimatplotlib.pyplot.text
matplotlib.axes.Axes.text
Wyjście obu
źródło