Kim Milferstedt
2007-Mar-02 15:48 UTC
[R] barplot with different color combination for each bar
Hi, I'd like to construct a somewhat unusual barplot. In "barplot" I use beside=F as I'd like to have stacked bars. The height of each bar is always the same. Information in my plot is coded in the color of the bar. I therefore need to be able so assign a different combination (or order) of colors to each individual stacked bar. In the example below, the combination of colors for my plot is generated by X, Q, color and cols. These colors are supposed to fill the stacked bars with the height of H. However, only the first column of cols is used for all columns of H as "barplot" only allows me to assign one vector for the color scheme of the entire barplot. Does anybody know a way how I can assign each bar a potentially unique color combination? Thanks for your help! Kim X <- seq(1:6) Q <- matrix(sample(X, 60, replace = T), nrow=6, byrow = T) H <- matrix(rep(1,60), nrow=6, byrow=T) color <- c("blue", "orange", "gold", "indianred", "skyblue4", "lightblue") cols <- ifelse( (Q ==1) , color[1], ifelse( (Q ==2), color[2], ifelse( (Q ==3) , color[3], ifelse( (Q ==4), color[4], ifelse( (Q ==5) , color[5], color[6] ) ) ) ) ) barplot( H, col=cols, width = c(0.1), xlim = c(0,3), beside=F ) __________________________________________ Kim Milferstedt University of Illinois at Urbana-Champaign Department of Civil and Environmental Engineering 4125 Newmark Civil Engineering Laboratory 205 North Mathews Avenue MC-250 Urbana, IL 61801 USA phone: (001) 217 333-9663 fax: (001) 217 333-6968 email: milferst at uiuc.edu http://cee.uiuc.edu/research/morgenroth
Jonne Zutt
2007-Mar-05 10:43 UTC
[R] barplot with different color combination for each bar
Hi, I'd suggest you use ?rect for this. Here's an example (I did not check whether it's correct...) I also improved (but not checked :) your definition of cols. Jonne. X <- seq(1:6) Q <- matrix(sample(X, 60, replace = T), nrow=6, byrow = T) H <- matrix(rep(1,60), nrow=6, byrow=T) color <- c("blue", "orange", "gold", "indianred", "skyblue4", "lightblue") cols <- matrix(data=color[Q], ncol=10) # Old: barplot(H, col=cols, width = c(0.1), xlim = c(0,3), beside=F) # New: x11() plot(0, 0, type="n", ylim=c(0,nrow(Q)), xlim=c(0,ncol(Q)), xlab="xlabel", ylab="") xleft <- rep(1:ncol(Q), each=nrow(Q)) ybottom <- rep(1:nrow(Q), times=ncol(Q)) rect(xleft-1, ybottom-1, xleft, ybottom, col=cols) On Fri, 2007-03-02 at 09:48 -0600, Kim Milferstedt wrote:> Hi, > > I'd like to construct a somewhat unusual barplot. In "barplot" I use > beside=F as I'd like to have stacked bars. The height of each bar is > always the same. Information in my plot is coded in the color of the > bar. I therefore need to be able so assign a different combination > (or order) of colors to each individual stacked bar. > > In the example below, the combination of colors for my plot is > generated by X, Q, color and cols. These colors are supposed to fill > the stacked bars with the height of H. However, only the first column > of cols is used for all columns of H as "barplot" only allows me to > assign one vector for the color scheme of the entire barplot. > > Does anybody know a way how I can assign each bar a potentially > unique color combination? > > Thanks for your help! > > Kim > > X <- seq(1:6) > Q <- matrix(sample(X, 60, replace = T), nrow=6, byrow = T) > H <- matrix(rep(1,60), nrow=6, byrow=T) > > color <- c("blue", "orange", "gold", "indianred", "skyblue4", "lightblue") > cols <- ifelse( > (Q ==1) , color[1], > ifelse( > (Q ==2), color[2], > ifelse( > (Q ==3) , color[3], > ifelse( > (Q ==4), color[4], > ifelse( > (Q ==5) , color[5], color[6] > ) > ) > ) > ) > ) > > barplot( > H, > col=cols, > width = c(0.1), > xlim = c(0,3), > beside=F > ) > > __________________________________________ > > Kim Milferstedt > University of Illinois at Urbana-Champaign > Department of Civil and Environmental Engineering > 4125 Newmark Civil Engineering Laboratory > 205 North Mathews Avenue MC-250 > Urbana, IL 61801 > USA > phone: (001) 217 333-9663 > fax: (001) 217 333-6968 > email: milferst at uiuc.edu > http://cee.uiuc.edu/research/morgenroth > > ______________________________________________ > R-help at stat.math.ethz.ch 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.
Possibly Parallel Threads
- rgl.postscript generating pdf: floating xlab, font size, transparency
- R for copying and pasting selected image files?
- nested if/else very slow, more efficient ways?
- removing a specific number of digist from a character string
- update index in "for" statement during calculation