[R] how to adjust the x axis range based on y axis data

Kara Przeczek przeczek at unbc.ca
Wed Jul 10 21:06:26 CEST 2013

I am using R studio version 0.97.336.

I am trying to produce multiple figures based on a large data set (98010 rows). I am creating a plot for each TITLE (related to a variable/station combination).

#Create a plot for each Title. Save all plots as jpegs in folder named "SkeenaQfigs"
for(i in 1:nlevels(dt$TITLE)){
  tmp.title <- subset(dt, TITLE == levels(dt$TITLE)[i])
  #save plot to file
  setwd("H:/R stuff/SJackson/SkeenaQfigs")
  options(show.error.messages = FALSE)
  result <- try(plot(tmp.title$YEAR, tmp.title$VALUE, xlab = "Year", ylab="", main = tmp.title$TITLE[1]))
  if(class(result) == 'try-error')
    print(paste("error", tmp.title$TITLE[1], sep=" "))
    else {
    jpeg(file = paste(tmp.title$TITLE[1],".jpg",sep=""))
    plot(tmp.title$YEAR, tmp.title$VALUE, xlab = "Year", ylab="", main = tmp.title$TITLE[1])

The range of YEAR is the same for every station, but there is not always data for every year (and some stations have no data). I would like each plot to adjust the x-axis to start at the first occurrence of a y value.

I used

tmp.title <- tmp.title[!is.na(tmp.title$VALUE),]

to remove all the rows where VALUE = NA. However, there are some years later on in the data set that are missing data, but I want those to be included. I only want to remove the first empty rows.

I then tried,

xmin <- min(tmp.title$YEAR[tmp.title$VALUE>0], na.rm=T)
xmax <- max(tmp.title$YEAR, na.rm=T)

plot(tmp.title$YEAR, tmp.title$VALUE, xlab = "Year", ylab="", xlim=c(xmin,xmax), main = tmp.title$TITLE[1])

This works, but is there a simpler way to do this within the plot command?

Thank you very much for your help!


More information about the R-help mailing list