2009-09-27 11 views

Odpowiedz

6

Musisz usunąć oś (poprzez ustawienie yaxt = "n"), a następnie ponownie go prawidłowo Format:

plot((1:100)^3, log = "y", yaxt = "n") 
axis(2, format(c(1,10,100)^3, scientific=FALSE)) 

To asked before on R-help.

+3

Proponuję za pomocą osi (2, format (axTicks (2, dziennik = TRUE), scientific = FALSE)) w drugim wierszu. Wtedy mniej "zależy od człowieka". – Marek

3

Dodatkowo, jeśli po prostu nie podoba ci się wygląd notacji naukowej 1e + 03, pakiet sfsmisc ma funkcję axTexpr() do formatowania etykiet osi w notacji * 10^k.

library(sfsmisc) 
example(axTexpr) 
-3

Jest to dość późno, ale szukałem tego samego rozwiązania. Co zrobiłem (wyszukując, prób i błędów) jest:

from matplotlib.ticker import MultipleLocator, FormatStrFormatter 
majorFormatter = FormatStrFormatter('%d') # shows 1 instead of 10^0 etc 

i później, w działce proces tworzenia:

ax = subplot(111) # ie one plot, but need to refer to it as 'ax' 
semilogy(x,y) 

i tuż przed show(),

ax.yaxis.set_major_formatter(majorFormatter) 

Tutaj mogą być niepotrzebne bity, ponieważ jestem nowicjuszem w Pythonie.

+0

Twój kod to Python, ale tagi pokazują, że pożądanym językiem programowania jest R. – rinni

0

Jak rozumiem pytanie, oryginalny plakat chciał pozbyć się naukowej notacji etykiet. Miałem ten sam problem i okazało się ten działa w tym celu (bez użycia pakietu sfsmisc z odpowiedzią Kevina, który nie próbowałem):

plot((1:100)^3, log = "y", yaxt = "n") 
axis(2, at=axTicks(2,log=TRUE), labels=format(axTicks(2, log=TRUE), scientific=FALSE)) 
Powiązane problemy