[R] using color coded colorbars for bar plots

hadley wickham h.wickham at gmail.com
Mon Dec 3 17:30:19 CET 2007

On 12/2/07, Jim Lemon <jim at bitwrit.com.au> wrote:
> James.Dell at csiro.au wrote:
> > Hi Jim,
> > Thanks for getting back to me so quickly.
> >
> > I did look at color.legend, but that seems to plot colored blocks for
> > the observations (in this case the mean) and not for the color.scale
> > (which represents variance in this case).  Unless there is a
> > functionality that I haven't discovered yet.  If you have created a
> > similar plot and would be happy to share some code I'd be very
> > apprecitive.
> >
> Part of the problem is that you seem to have two names for the same
> variable in your code (Standard.Deviance and Standard.Deviation - unless
> that was a typo). Notice how I calculate the colors twice, the second
> time with a simple integer sequence to get the right number of evenly
> spaced colors. In your example, you calculated the colors for
> RankVar$Standard.Deviance again, but you don't need all those colors for
> the legend, and they're in the wrong order anyway. What is generally
> wanted for a color legend is the minimum and maximum values on the ends
> and a few linear interpolations in the middle.
> barplot(RankVar$MeanDecreaseAccuracy,
>   col=color.scale(RankVar$Standard.Deviance,
>   c(0,1,1),c(1,1,0),0),
>   ylab = "Variable Importance",
>   names.arg = rownames(RankVar),
>   cex.names = .7,
>   main = "Variables from RandomFishForest",
>   sub= "Mean Decrease in Accuracy")
> col.labels<- c("Low","Mid","High")
> color.legend(6,13,11,14,col.labels,
>   rect.col=color.scale(1:5,c(0,1,1),c(1,1,0),0))

Another option would be to use ggplot2:


qplot(rownames(RankVar), MeanDecreaseAccuracy, data = RankVar, colour
= Standard.Deviance)

and then use http://had.co.nz/ggplot2/scale_colour_gradient.html to
control the choice of colours for the mapping.




More information about the R-help mailing list