2013-02-27 19 views
8

dla każdej etykiety kleszcza na osi y, chciałbym zmienić: label -> 2^labelmatplotlib: zmiana yAxis zaznaczyć etykiety

ja wykreślenie log-log dane (podstawa 2), ale chciałbym etykiety, aby pokazać oryginalne wartości danych.

wiem, że mogę dostać aktualne y etykiet ylabels = plt.getp(plt.gca(), 'yticklabels')

To daje mi listę: <a list of 9 Text yticklabel objects> z których każdy jest <matplotlib.text.Text object at 0x...>

spojrzałem na dokumentacji obiektów tekstowych na http://matplotlib.org/users/text_props.html ale nadal nie jestem pewien, jaka jest poprawna składnia, aby zmienić ciąg znaków w każdej etykiecie tekstowej.

Raz zmienić etykiety, mogę ustawić je na osi przy użyciu:

plt.setp(plt.gca(), 'yticklabels', ylabels)

+0

Czy używasz coś jak 'loglog (X, Y, baseX = 2, baseY = 2) '? Kiedy to robię, etykiety mają już postać 2^k. –

+0

@WarrenWeckesser nie, to faktycznie na działce pudełkowej – Joe

Odpowiedz

8

Jeśli chcesz to zrobić w ogólnym przypadku można użyć FuncFormatter (patrz: matplotlib axis label format, imshow: labels as any arbitrary function of the image indices. Matplotlib set_major_formatter AttributeError)

W ty przypadku następujące powinny działać:

import matplotlib as mpl 
import matplotlib.pyplot as plt 

def mjrFormatter(x, pos): 
    return "$2^{{{0}}}$".format(x) 

def mjrFormatter_no_TeX(x, pos): 
    return "2^{0}".format(x) 

ax = plt.gca() 
ax.yaxis.set_major_formatter(mpl.ticker.FuncFormatter(mjrFormatter)) 
plt.draw() 

absured {} Cytowanie jest konsekwencją łańcucha nowy styl frommating

+0

Po uruchomieniu otrzymuję ostrzeżenia, że ​​nie wiem, jak interpretować: – Joe

+0

/usr/lib/python2.7/site-packages/matplotlib/font_manager.py:1242: UserWarning: findfont: Nie znaleziono rodziny czcionek ['STIXSizeOneSym']. Powrót do Bitstream Vera Sans (prop.get_family(), self.defaultFamily [fontext])) – Joe

+0

/usr/lib/python2.7/site-packages/matplotlib/font_manager.py:1252: UserWarning: findfont: Could not match: family = Bitstream Vera Sans: style = normal: variant = normal: weight = normal: stretch = normal: size = 12. Wracając /usr/share/fonts/thai-scalable/Waree-Oblique.ttf UserWarning) /usr/lib/python2.7/site-packages/matplotlib/font_manager.py:1242: UserWarning: findfont: Rodzina czcionek [' STIXSizeThreeSym '] nie znalezione. Wracając do Bitstream Vera Sans (prop.get_family(), self.defaultFamily [fontext])) – Joe

Powiązane problemy