[R] Scientific notation in plots
Leif Kirschenbaum
leif at reflectivity.com
Tue Jan 17 17:50:39 CET 2006
You could also write your numbers using SI suffixes.
Below is a function I use for this purpose.
The option "near" allows you to require that numbers between 0.001 and 1000 are written as decimal; i.e. "0.010" appears as "0.010" instead of "10.0m".
##
## num2SI converts numbers to SI suffixed numbers
##
num2SI<-function(num,digits=4,near=TRUE){
power<-signif(log10(abs(num)),digits=6)
power3=floor(power/3); power3[!is.finite(power3)]=0
powers=c("y","z","a","f","p","n","u","m","","k","M","G","T","P")
powerstr=powers[power3+9]
newnum=signif(num/10^(power3*3),digits=digits)
newnum[is.nan(newnum)]=0
numstr=(paste(newnum,powerstr,sep=""))
nearidx=near & (abs(num)>0.001) & (abs(num)<1000)
nearidx[is.na(nearidx)]=FALSE
if(sum(nearidx)) numstr[nearidx]=sprintf("%.*f",pmax(1,(digits-floor(power[nearidx])-1),na.rm=TRUE),num[nearidx])
numstr[!is.finite(num)] = paste(num[!is.finite(num)])
return(numstr)
}
Leif Kirschenbaum
Senior Yield Engineer
Reflectivity, Inc.
(408) 737-8100 x307
leif at reflectivity.com
> Message: 6
> Date: Fri, 13 Jan 2006 12:49:54 +0100 (CET)
> From: Oddmund Nordg??rd <nood at ext.sir.no>
> Subject: [R] Scientific notation in plots
> To: r-help at stat.math.ethz.ch
> Message-ID: <Pine.LNX.4.56.0601131247300.25418 at dna.sir.no>
> Content-Type: TEXT/PLAIN; charset=ISO-8859-1
>
>
> Is it possible to use scientific notation of numbers on the
> axis of plots
> without using the xEy notation. That means: a beatiful 1x10^3
> instead of 1E3.
> Logarithmic scale, in my case.
>
> Thank you very much!
>
> Oddmund
>
> ******************************************
>
> Oddmund Nordg?rd
>
> Department of Haematology and Oncology
> Stavanger University Hospital
> P.O. Box 8100
> 4068 STAVANGER
> Phone: 51 51 89 34
> Email: nood at ext.sir.no
More information about the R-help
mailing list