[R] Plot frame border to start at zero?

Steven McKinney smckinney at bccrc.ca
Wed Jan 20 03:57:18 CET 2010



> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Douglas M. Hultstrand
> Sent: Tuesday, January 19, 2010 4:42 PM
> To: R mailing list
> Subject: [R] Plot frame border to start at zero?
> 
> Hello,
> 
> I am creating plots of hourly precipitation and accumulated
> precipitation (on different axis, see attached image). I was wondering
> how can I have the plot frame (black border) start at zero, it looks
> like it is plotted less than zero?

It doesn't appear to be plotted starting at less than zero.

S language plots were designed from the beginning to have
a little extra space around the data points so none of your
data points get lost or obscured because they overstrike the
borders.  Thus the surrounding box is drawn about 5% outside
of the data range in the X and Y axis directions, to avoid
any data point overstrike.

You can specify the x and y axis data ranges with the
xlim and ylim arguments if you want complete control
of the data range.  It can be done, but you will have to 
work hard to get the graph to do bad things like print 
over your data!  (See the various plot control arguments
in e.g. help("par") ).

> 
> The code I use to create the png files is below:
> 
> CairoPNG(PNG_file,width=1000, height=600, pointsize=14, bg="white")
>         opar <- par(mai = c(.8, .8, 1, .8))    # Set margins
>         plot(ppt,type="h",col="dark grey",ylim=c(0,max_ppt+1), lwd=6,
> xlab='', ylab='', main=title, frame.plot=T, axes=F)
>         axis(2, col="black", las=2)
>         par(new=T) # R to overwrite the first plot
>         plot(accum, type="l", col="blue", axes=F, ylab='', xlab='',
> lwd=2)
>         axis(1, col="black", las=1)
>         axis(4, pretty(c(0, max_accum) ), col="black", las=2)
>         legend("topleft", legend=c('Incremental', 'Accumulated'),
> col=c("dark grey", "blue"), lwd=c(6, 2.0))
>         legend((length(n)-4),max_accum,
> legend=paste(round(max_accum,2)), bty="n", cex=.90)     ### max accum
> location
>         mtext(paste("Lat:", .lat, "Lon:", .lon), cex=0.95)
>         mtext("Index Hour", side=1, line=2)
>         mtext("Incremental Precipitation (in)", side=2, line=2.5)
>         mtext("Accumulated Precipitation (in)", side=4, line=2)
> dev.off()
> 
> 
> Thanks for all your help,
> Doug
> 
> ---------------------------------
> Douglas M. Hultstrand, MS
> Senior Hydrometeorologist
> Metstat, Inc. Windsor, Colorado
> voice: 970.686.1253
> email: dmhultst at metstat.com
> web: http://www.metstat.com
> ---------------------------------






Steven McKinney, Ph.D.

Statistician
Molecular Oncology and Breast Cancer Program
British Columbia Cancer Research Centre

email: smckinney -at-  bccrc +dot+ ca
tel: 604-675-8000 x7561

BCCRC
Molecular Oncology
675 West 10th Ave, Floor 4
Vancouver B.C.
V5Z 1L3

Canada



More information about the R-help mailing list