2013-06-30 11 views
6

mam prosty wykres:R notacji naukowej działkami

#!/usr/bin/Rscript                      

png('plot.png') 

y <- c(102, 258, 2314)                   
x <- c(482563, 922167, 4462665) 

plot(x,y) 
dev.off() 

R wykorzystuje 500, 1000, 1500, itp na osi y. Czy istnieje sposób, w jaki mogę użyć notacji naukowej dla osi y i umieścić * 10^3 na górze osi, jak na poniższym rysunku?

enter image description here

Odpowiedz

3

Jest to swego rodzaju hacky sposób, ale nie ma nic złego.

plot(x,y/1e3, ylab="y /10^3") 
+0

Dzięki. Byłoby lepiej używać wyrażeń http://stackoverflow.com/questions/4302367/concatenate-strings-and-expressions-in-a-plots-title – Yang

2

Jak masz etykiety na swoją oś zależy od używanego systemu wykreślania (podstawa, ggplot2 lub kratownica) można użyć funkcji z pakietu scales formatowanie liczb osi:

library(scales) 
x <- 10^(1:10) 
scientific_format(1)(x) 
[1] "1e+01" "1e+02" "1e+03" "1e+04" "1e+05" "1e+06" "1e+07" "1e+08" "1e+09" "1e+10" 

tu przykład stosując ggplot2:

library(ggplot2) 
dat <- data.frame(x = c(102, 258, 2314),                  
        y = c(482563, 922167, 4462665)) 

qplot(data=dat,x=x,y=y) + 
    scale_y_continuous(label=scientific_format(digits=1))+ 
    theme(axis.text.y =element_text(size=50)) 

enter image description here

EDIT The OP ma specyficzne potrzeby. Oto kilka pomysłów, których użyłem tutaj, aby to osiągnąć:

  1. Można dostosować etykiety wydruku za pomocą funkcji axis.
  2. Zastosowanie mtext umieścić tekst w zewnętrznym obszarze działki
  3. używając wyrażenia zysków dzięki funkcji plotmath ...

enter image description here

y <- c(102, 258, 2314)                   
x <- c(482563, 922167, 4462665) 
plot(x,y,ylab='',yaxt='n') 
mtext(expression(10^3),adj=0,padj=-1,outer=FALSE) 
axis(side=2,at=y,labels=round(y/1000,2)) 
+0

Chyba źle zrozumiałeś moje pytanie; Chcę 1, 2, 3, 4 z osią y i e + 06 na górze osi y. – Yang

+0

Ale dzięki za informacje. – Yang

+0

Nie Rozumiem doskonale twojej potrzeby. Moja odpowiedź była ogólna, aby zaprosić cię do odkrycia R działek funkcji i nie próbować odtwarzać niektórych funkcji MATLAB. Wiele domyślnych parametrów R jest zoptymalizowanych, aby łatwo wyodrębnić informacje z wykresu. np. umieszczenie 10^3, sprawienie, że fabuła będzie trudniejsza do zrozumienia, jesteśmy zobowiązani do przeskalowania za każdym razem, gdy podążamy za punktem ... – agstudy

9

Podobna technika jest użycie eaxis (rozszerzony/oś inżynieryjna) z pakietu sfsmisc.

To działa tak:

library(sfsmisc) 

x <- c(482563, 922167, 4462665) 
y <- c(102, 258, 2314) 

plot(x, y, xaxt="n", yaxt="n") 

eaxis(1) # x-axis 
eaxis(2) # y-axis 

enter image description here

Powiązane problemy