Mój problem polega na tym, że kiedy wykrywam wartości Y, które są bardzo blisko, MatplOlb wykorzystuje odchylenie dla Yticklabel, jak widać na obrazku poniżej (+1.2 w lewym górnym rogu). obraz wyjściowy

Nie chcę stronniczości, ponieważ nie zmniejsza długości Yticklabels. Jak mogę usunąć odchylenie, aby pokazano 1.2000010, 1.2000012 ...

Oto kod, który wygenerowałem przykład:

from pylab import *

plot((0,1),(1.200001,1.200002))
show()
2
Torstein I. Bø 6 grudzień 2011, 01:07

3 odpowiedzi

Najlepsza odpowiedź

Najprostszym (i prawdopodobnie preferowanym) sposobem osiągnięcia tego za pomocą interfejsu Pyplotów jest używając dostarczonej funkcji pyplot.ticklabel_format w sposób analogiczny

from pylab import *

plot((0,1),(1.200001,1.200002))
ticklabel_format(useOffset=False)
show()

Pozostałe proponowane rozwiązania zapewniają bardziej bezpośredni kontakt.

4
David Zwicker 6 grudzień 2011, 15:58

Wygląda na to, że potrzebowałeś, aby dostosować formatowanie dla swoich YTicklabels, które możesz zrobić bezpośrednio. Korzystanie z To Przykład, dostałem to do pracy:

from pylab import *
from matplotlib.ticker import FormatStrFormatter

plt.clf()
ax = subplot(111)
plot((0,1),(1.200001,1.200002))
majorFormatter = FormatStrFormatter('%.7f')
ax.yaxis.set_major_formatter(majorFormatter)
show()
2
cosmosis 5 grudzień 2011, 21:39

Możesz kontrolować tekst, który jest wykreślony w każdym YTick za pomocą yticks() Metoda. Oto blok kodu do robienia tego, co chcesz:

from pylab import *

plot((0,1),(1.200001,1.200002))
ticks,ticklabels =  yticks()
newTickLabels = []
for tick in ticks:
    newTickLabels.append("%10.7f"%tick)
yticks(ticks,newTickLabels)
show()

Używam yticks() bez parametrów, aby uzyskać kleszcze i odpowiednie etykiety, które ignoruję. Potem robię nową tablicę ciągów, jeden dla każdego kleszcza. Każda etykieta jest wartością zaznaczenia w formacie strunowym. Musisz dostosować ciąg formatowania "%10.7f", aby uzyskać pożądany wygląd. Następnie przechodzę kleszcze i zaznaczę etykiety z powrotem do metody yticks(), aby je przedefiniować.

Oto wynik: Wprowadź opis obrazu tutaj

Wygląda na również, że limity Y zmieniły się automatycznie; Można to regulować za pomocą ylim().

0
Yann 5 grudzień 2011, 21:39