barplot() defaults to stacked bars for matrices and uses the colors fresh for each bar: e.g.,
layout(1:2) barplot(matrix(1:6, 2), col = c("red", "blue","green")) barplot(matrix(1:6, 3), col = c("red", "blue","green")) To get what you are looking for, try something like this: x = matrix(1:6,1); colnames(x) = LETTERS[1:6] barplot(as.vector(x), names.arg = colnames(x)) More generally, just turn the matrix into a vector mat2vec <- function(x){ stopifnot(any(dim(x) == 1L)) if(nrow(x) != 1L) x <- t(x) cn <- colnames(x) x <- c(x) names(x) <- cn return(x) } and barplot that. Hope this helps, Michael On Mon, Dec 5, 2011 at 11:41 AM, Federico Calboli <f.calb...@imperial.ac.uk> wrote: > > On 5 Dec 2011, at 15:58, R. Michael Weylandt wrote: > >> x <- c(2L, 108L, 0L, 0L, 0L, 1L, 3L, 0L, 0L, 0L, 0L, 0L, 7L, 18L, >> 3L, 4L, 8L, 20L, 26L, 20L, 19L, 7L, 1L, 1L) >> mycol = c(rep('yellow', 2), rep('white', 3), rep('orange',2), >> rep('white', 5), rep('orange',3), rep('red',9)) >> barplot(x, col = mycol) >> >> Produces a multi-colored barplot on my machine so I understand your >> confusion. Does the above work for you? It may be something hidden in >> your data. > > It does work. Might it be that my data is a matrix? I'm using it to give a > name for each bar. > > >> >> What is your sessionInfo() and str(mydata)? Same problem in a fresh R >> session (with --vanilla if necessary)? > > > sessionInfo() > R version 2.14.0 (2011-10-31) > Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) > > locale: > [1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8 > > attached base packages: > [1] splines stats graphics grDevices utils datasets methods base > > other attached packages: > [1] survival_2.36-10 > > loaded via a namespace (and not attached): > [1] tools_2.14.0 > > > str(mydata) > num [1, 1:24] 2 108 0 0 0 1 3 0 0 0 ... > - attr(*, "dimnames")=List of 2 > ..$ : NULL > ..$ : chr [1:24] "A" "B" "C" "D" ... > > > Basically, using the 'x' object as you created the code works, and I can have > a workaround. I fail to see why it would not work using mydata. > > Cheers > > F > > > >> >> Michael >> >> On Mon, Dec 5, 2011 at 10:44 AM, Federico Calboli >> <f.calb...@imperial.ac.uk> wrote: >>> Hi All, >>> >>> I'm having a problem with barplot: >>> >>> mydata >>> [1,] 2 108 0 0 0 1 3 0 0 0 0 0 7 18 3 4 8 20 26 20 19 7 1 >>> 1 >>> >>> mycol = c(rep('yellow', 2), rep('white', 3), rep('orange',2), rep('white', >>> 5), rep('orange',3), rep('red',9)) >>> >>> barplot(mydata, col = mycol) >>> >>> gives me an uniformly yellow barplot. How do I solve this? >>> >>> bw >>> >>> Federico >>> >>> >>> >>> -- >>> Federico C. F. Calboli >>> Neuroepidemiology and Ageing Research >>> Imperial College, St. Mary's Campus >>> Norfolk Place, London W2 1PG >>> >>> Tel +44 (0)20 75941602 Fax +44 (0)20 75943193 >>> >>> f.calboli [.a.t] imperial.ac.uk >>> f.calboli [.a.t] gmail.com >>> >>> ______________________________________________ >>> R-help@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. > > -- > Federico C. F. Calboli > Neuroepidemiology and Ageing Research > Imperial College, St. Mary's Campus > Norfolk Place, London W2 1PG > > Tel +44 (0)20 75941602 Fax +44 (0)20 75943193 > > f.calboli [.a.t] imperial.ac.uk > f.calboli [.a.t] gmail.com > ______________________________________________ R-help@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.