[R] Bin Category Labels on Axis

David Winsemius dwinsemius at comcast.net
Tue Jun 16 04:08:07 CEST 2009


The canonical method of creating a numeric value from a factor is to  
wrap the factor in as.numeric(as.character( (.))  The as.character  
grabs the value from the factor levels rahter than giving you the  
internal codings and the as.numeic finishes the job.

Set xaxt=FALSE in the plot arguments. The axis can be managed with the  
axis() function with at= and labels= arguments. You might want to not  
plot every one of them, perhaps:

  at = seq(-36, 33, by = 5) , labels = as.numeric(as.factor(z 
$bins[seq(-36, 33, by = 5)] )),
-- 
David Winsemius

On Jun 15, 2009, at 7:09 PM, jproville wrote:

>
> Hi,
>
> I'd really appreciate if someone could give me some help or advice  
> about
> this - I've tried everything I know and am clueless about how to  
> proceed!
>
> I've written a script to import ASCII data of raster maps, bin them  
> into
> categories, calculate the mean values within these bins and plot the  
> two in
> a simple graph. I'm running into problems with my x axis, as R  
> cannot add
> the bin categories as labels and simply outputs the factor values of  
> the
> number of bins.
>
> In much more detail:
> One set of data is fractional values for the amount of cropland in a
> designated area (raster cell). The second is annual average  
> temperature
> data, in the same format. I import these using:
> xRaw<-scan(".../Temp.txt")
> yRaw<-scan(".../Cropland.txt")
>
> and then designate cells with values of -9999 as NAs:
> x<-ifelse(xRaw==-9999,NA,xRaw)
> y<-ifelse(yRaw==-9999,NA,yRaw)
>
> Then, I compile them into a 2 column data frame, and exclude the NA  
> values:
> zRaw<-data.frame(x,y)
> z<-na.exclude(zRaw)
>
> I am then left with data frame 'z' which is a refined list of data.  
> Using
> the 'cut' function, I assign each row into one of 69 different bins:
> z$bins<-cut(z$x, breaks=c(-36:33), include.lowest=TRUE)
>
> Each bin is now 1 degree Celsius wide. Within each one, I calculate  
> the mean
> value of the corresponding fractional cropland data:
> a<-tapply(z$y, z$bins, mean)
>
> Object 'a' now contains each bin category and the associated mean  
> cropland
> values, so 69 points in total.
>
>
> Now, a problem arises when I try and plot these values using:
> plot(a, xlab="Temperature", ylab="Fraction of Cropland", pch=20)
> What happens is that R intuitively labels my x-axis from 1-70, which
> corresponds to the bin factor values that were returned when the 'cut'
> function was used. I would like to simply label the x-axis with my
> temperature values, from -36 degrees to 33 degrees, instead of having
> numbers 1-69. How can I do this??
>
> Thanks,
>
> Jeremy Proville
> M.Sc. Candidate
> Bioresource Engineering, McGill University
> -- 
> View this message in context: http://www.nabble.com/Bin-Category-Labels-on-Axis-tp24042325p24042325.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list