Warnes, Gregory R
2003-Mar-08 16:56 UTC
[R] RE: Text Rotation (was: Take care with codes()!)
I've just uploaded gregmisc_0.8.2.tar.gz to CRAN. It should show up in the package repository in a day or two. This version of the gregmisc package provides an enhanced 'balloonplot' function with 'rowsrt', 'colsrt' arguments to control rotation of the labels, and 'rowmar', 'colmar' to control the amount of space reserved for the labels. Here's an example: # Create an Example Data Frame Containing Car x Color data, with long car names carnames <- c("BMW: High End, German", "Renault: Medium End, French", "Mercedes: High End, German", "Seat: Imaginary, Unknown Producer") carcolors <- c("red","white","silver","green") datavals <- round(rnorm(16, mean=100, sd=60),1) data <- data.frame(Car=rep(carnames,4), Color=rep(carcolors, c(4,4,4,4) ), Value=datavals ) # generate balloon plot with default scaling, the column labels will overlap balloonplot( data$Color, data$Car, data$Value) # try again, with column labels rodated 90 degrees, and given more space balloonplot( data$Car, data$Color, data$Value, colmar=3, colsrt=90) -Greg> -----Original Message----- > From: Warnes, Gregory R > Sent: Saturday, March 08, 2003 10:12 AM > To: 'Ramon Alonso-Allende'; Warnes, Gregory R > Cc: 'ripley at stats.ox.ac.uk'; 'r-help at stat.math.ethz.ch' > Subject: RE: Text Rotation (was: Take care with codes()!) > > > > You can use the graphics parameter "srt" to rotate displayed > text by a specified number of degrees, e.g. srt=45 to put it > on an angle, srt=90 to put it vertical. > > If you do this, may need to modify the call to text to > increase ylim and change the plot location to give you more room. > > I'm working to update the 'balloonplot' function in the > gregmisc package now to handle this case gracefully. > > -Greg > > > > -----Original Message----- > > From: Ramon Alonso-Allende [mailto:allende at cnb.uam.es] > > Sent: Saturday, March 08, 2003 6:41 AM > > To: Warnes, Gregory R > > Cc: 'ripley at stats.ox.ac.uk'; 'r-help at stat.math.ethz.ch' > > Subject: Re: Take care with codes()! (was [R] type of > representation) > > > > > > Hi > > > > I have been ussing this code displayed while a go to do > > balloons plots. > > > > My problem is that the labels of the data i'm working on now > > are to big > > and they overlap in the X axis. > > > > Is there any way i can plot the text vertically or with some > > inclination? > > > > > > Thanks > > > > Ramon > > > > Warnes, Gregory R wrote: > > > Ahh yes, sorry about that. > > > > > > Here's the corrected snippet: > > > > > > # Create an Example Data Frame Containing Car x Color data > > > carnames <- c("bmw","renault","mercedes","seat") > > > carcolors <- c("red","white","silver","green") > > > datavals <- round(rnorm(16, mean=10, sd=4),1) > > > data <- data.frame(Car=rep(carnames,4), > > > Color=rep(carcolors, c(4,4,4,4) ), > > > Value=datavals ) > > > # show the data > > > data > > > > > > # plot the Car x Color combinations, using 'cex' to specify > > the dot size > > > plot(x=as.numeric(data$Car), # as.numeric give numeric values > > > y=as.numeric(data$Color), > > > cex=data$Value/max(data$Value)*12, # standardize size > > to (0,12) > > > pch=19, # filled circle > > > col="skyblue", # dot color > > > xlab="Car", # x axis label > > > ylab="Color", # y axis label > > > xaxt="n", # no x axis lables > > > yaxt="n", # no y axis lables > > > bty="n", # no box around the plot > > > xlim=c(0,nlevels(data$Car )+0.5), # extra space on > > either end of plot > > > ylim=c(0.5,nlevels(data$Color)+1.5) # so dots don't > > cross into margins > > > ) > > > > > > # add text labels > > > text(x=1:nlevels(data$Car), y=nlevels(data$Car)+1, > > labels=levels(data$Car)) > > > text(x=0, y=1:nlevels(data$Color), labels=levels(data$Color) ) > > > > > > # add borders between cells > > > abline(v=(0:nlevels(data$Car)+0.5)) > > > abline(h=(0:nlevels(data$Color)+0.5)) > > > > > > # annotate with actual values > > > text(x=as.numeric(data$Car), # as.numeric give numeric values > > > y=as.numeric(data$Color), > > > labels=format(data$Value), # label value > > > col="black", # textt color > > > ) > > > > > > # put a nice title > > > title(main="Car by Color Popularity\n(Dot size proportional > > to popularity)") > > > > > > > > > -Greg > > > > > > > > >>-----Original Message----- > > >>From: ripley at stats.ox.ac.uk [mailto:ripley at stats.ox.ac.uk] > > >>Sent: Friday, January 03, 2003 1:53 PM > > >>To: Warnes, Gregory R > > >>Cc: 'allende at gredos.cnb.uam.es'; 'r-help at stat.math.ethz.ch' > > >>Subject: RE: Take care with codes()! (was [R] type of > > representation) > > >> > > >> > > >>From the help page of codes(): > > >> > > >> Normally `codes' is not the appropriate function to > use with an > > >> unordered factor. Use `unclass' or `as.numeric' to > extract the > > >> codes used in the internal representation of the > > factor, as these > > >> do not assume that the codes are sorted. > > >> > > >>and this is one of the `normally' cases. Your code will only work > > >>correctly if the levels are in alphabetical order (in the > > >>locale in use). > > >> > > >>On Fri, 3 Jan 2003, Warnes, Gregory R wrote: > > >> > > >> > > >>>How about this snippet: > > >>> > > >>># Create an Example Data Frame Containing Car x Color data > > >>>carnames <- c("bmw","renault","mercedes","seat") > > >>>carcolors <- c("red","white","silver","green") > > >>>datavals <- round(rnorm(16, mean=10, sd=4),1) > > >>>data <- data.frame(Car=rep(carnames,4), > > >>> Color=rep(carcolors, c(4,4,4,4) ), > > >>> Value=datavals ) > > >>># show the data > > >>>data > > >>> > > >>># plot the Car x Color combinations, using 'cex' to specify > > >> > > >>the dot size > > >> > > >>>plot(x=codes(data$Car), # codes give numeric values > > >>> y=codes(data$Color), > > >>> cex=data$Value/max(data$Value)*12, # standardize size > > >> > > >>to (0,12) > > >> > > >>> pch=19, # filled circle > > >>> col="skyblue", # dot color > > >>> xlab="Car", # x axis label > > >>> ylab="Color", # y axis label > > >>> xaxt="n", # no x axis lables > > >>> yaxt="n", # no y axis lables > > >>> bty="n", # no box around the plot > > >>> xlim=c(0,nlevels(data$Car )+0.5), # extra space on > > >> > > >>either end of plot > > >> > > >>> ylim=c(0.5,nlevels(data$Color)+1.5) # so dots don't > > >> > > >>cross into margins > > >> > > >>> ) > > >>> > > >>># add text labels > > >>>text(x=1:nlevels(data$Car), y=nlevels(data$Car)+1, > > >> > > >>labels=levels(data$Car)) > > >> > > >>>text(x=0, y=1:nlevels(data$Color), labels=levels(data$Color) ) > > >>> > > >>># add borders between cells > > >>>abline(v=(0:nlevels(data$Car)+0.5)) > > >>>abline(h=(0:nlevels(data$Color)+0.5)) > > >>> > > >>># annotate with actual values > > >>>text(x=codes(data$Car), # codes give numeric values > > >>> y=codes(data$Color), > > >>> labels=format(data$Value), # label value > > >>> col="black", # textt color > > >>> ) > > >>> > > >>># put a nice title > > >>>title(main="Car by Color Popularity\n(Dot size proportional > > >> > > >>to popularity)") > > >> > > >>> > > >>>-Greg > > >>> > > >>> > > >>>>-----Original Message----- > > >>>>From: allende at gredos.cnb.uam.es > [mailto:allende at gredos.cnb.uam.es] > > >>>>Sent: Friday, January 03, 2003 4:46 AM > > >>>>To: r-help at stat.math.ethz.ch > > >>>>Cc: allende at gredos.cnb.uam.es > > >>>>Subject: [R] type of representation > > >>>> > > >>>> > > >>>>Hi > > >>>> > > >>>>I have some data that i want to plot but i don't find how to > > >>>>do it. I have car > > >>>>types (bmw,renault,mercedes,seat ...), colors and a number > > >>>>for each car > > >>>>type-color relation.I want to come up with a matrix > > >>>>representation of cars vs > > >>>>colors where in each intersection i could set a dot > > >>>>proportional in size to my > > >>>>third variable. > > >>>> > > >>>> > > >>>>Can anybody give me a clue of hoe to come up with such > > >> > > >>representation. > > >> > > >>>>Thanks > > >>>> > > >>>>Ramon > > >>>> > > >>>>______________________________________________ > > >>>>R-help at stat.math.ethz.ch mailing list > > >>>>http://www.stat.math.ethz.ch/mailman/listinfo/r-help > > >>>> > > >>> > > >>> > > >>>LEGAL NOTICE\ Unless expressly stated otherwise, this > > >> > > >>message is ... [[dropped]] > > >> > > >>>______________________________________________ > > >>>R-help at stat.math.ethz.ch mailing list > > >>>http://www.stat.math.ethz.ch/mailman/listinfo/r-help > > >>> > > >> > > >>-- > > >>Brian D. Ripley, ripley at stats.ox.ac.uk > > >>Professor of Applied Statistics, > http://www.stats.ox.ac.uk/~ripley/ > > >>University of Oxford, Tel: +44 1865 272861 (self) > > >>1 South Parks Road, +44 1865 272866 (PA) > > >>Oxford OX1 3TG, UK Fax: +44 1865 272595 > > >> > > > > > > > > > > > > LEGAL NOTICE > > > Unless expressly stated otherwise, this message is > > confidential and may be privileged. It is intended for the > > addressee(s) only. Access to this E-mail by anyone else is > > unauthorized. If you are not an addressee, any disclosure or > > copying of the contents of this E-mail or any action taken > > (or not taken) in reliance on it is unauthorized and may be > > unlawful. If you are not an addressee, please inform the > > sender immediately. > > > > > > > > > > -- > > Ramon Alonso-Allende Erhardt Tel: 91 > 585 46 76 > > Protein Design Group fax: 91 > 585 45 06 > > CNB/CSIC Campus U. Autonoma. Cantoblanco Madrid 28049 > > http://www.pdg.cnb.uam.es/allende/index.html > > > > >