Hello I have a palette vector of colour blind colours (in hexadecimal) which I?m using for plots, but they are not see-through, and as I wanted to overlay some histograms I wanted to convert these colours to rgb, when you can set the opacity. I have found the function col2rgb(), which works in the sense that it gives a vector of numbers but these don?t work directly in rgb because they are too big. If I divide through to make them all less than 1 I don?t get the corresponding colour-blind hue, but something somewhat off. Here is the colour-blind palette in a plot: *cb8<- c("#000000", "#E69F00", "#56B4E9", "#009E73","#F0E442", "#0072B2", "#D55E00", "#CC79A7")* *plot(0,0,xlim=c(1,8),ylim=c(0,1))* *points(1:8,rep(0.5,8),col=cb8,pch=19,cex=2)* so if I try to convert the red dot ("#D55E00") (number 7) I get *col2rgb("#D55E00"* [,1] red 213 green 94 blue 0 *points(7,0.25,col=rgb(rgb(213,94,0)),pch=19,cex=2)* gives me an error message and although if I divide through *points(7,0.25,col=rgb(213/307,94/307,0),pch=19,cex=2)* gives me a reddish dot, but not the same as in the colour-blind palette Somewhat mystified. Can anyone help?? Thanks Nick Wray [[alternative HTML version deleted]]
Does adjustcolor() help? cb8<- c("#000000", "#E69F00", "#56B4E9", "#009E73","#F0E442", "#0072B2", "#D55E00", "#CC79A7") plot(0,0,xlim=c(1,8),ylim=c(0,1)) points(1:8,rep(0.5,8),col=cb8,pch=19,cex=2) points(1:8,rep(0.75,8),col=adjustcolor(cb8, alpha.f = 0.3), pch=19,cex=2) On 2023-07-23 2:15 p.m., Nick Wray wrote:> Hello I have a palette vector of colour blind colours (in hexadecimal) > which I?m using for plots, but they are not see-through, and as I wanted to > overlay some histograms I wanted to convert these colours to rgb, when you > can set the opacity. > > I have found the function col2rgb(), which works in the sense that it gives > a vector of numbers but these don?t work directly in rgb because they are > too big. If I divide through to make them all less than 1 I don?t get the > corresponding colour-blind hue, but something somewhat off. > > Here is the colour-blind palette in a plot: > > > *cb8<- c("#000000", "#E69F00", "#56B4E9", "#009E73","#F0E442", "#0072B2", > "#D55E00", "#CC79A7")* > > *plot(0,0,xlim=c(1,8),ylim=c(0,1))* > > *points(1:8,rep(0.5,8),col=cb8,pch=19,cex=2)* > > > > so if I try to convert the red dot ("#D55E00") (number 7) I get > > *col2rgb("#D55E00"* > > [,1] > > red 213 > > green 94 > > blue 0 > > *points(7,0.25,col=rgb(rgb(213,94,0)),pch=19,cex=2)* > > gives me an error message and although if I divide through > > *points(7,0.25,col=rgb(213/307,94/307,0),pch=19,cex=2)* > > gives me a reddish dot, but not the same as in the colour-blind palette > > > > Somewhat mystified. Can anyone help?? Thanks Nick Wray > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.
On 23/07/2023 2:15 p.m., Nick Wray wrote:> Hello I have a palette vector of colour blind colours (in hexadecimal) > which I?m using for plots, but they are not see-through, and as I wanted to > overlay some histograms I wanted to convert these colours to rgb, when you > can set the opacity. > > I have found the function col2rgb(), which works in the sense that it gives > a vector of numbers but these don?t work directly in rgb because they are > too big. If I divide through to make them all less than 1 I don?t get the > corresponding colour-blind hue, but something somewhat off. > > Here is the colour-blind palette in a plot: > > > *cb8<- c("#000000", "#E69F00", "#56B4E9", "#009E73","#F0E442", "#0072B2", > "#D55E00", "#CC79A7")* > > *plot(0,0,xlim=c(1,8),ylim=c(0,1))* > > *points(1:8,rep(0.5,8),col=cb8,pch=19,cex=2)* > > > > so if I try to convert the red dot ("#D55E00") (number 7) I get > > *col2rgb("#D55E00"* > > [,1] > > red 213 > > green 94 > > blue 0 > > *points(7,0.25,col=rgb(rgb(213,94,0)),pch=19,cex=2)* > > gives me an error message and although if I divide through > > *points(7,0.25,col=rgb(213/307,94/307,0),pch=19,cex=2)* > > gives me a reddish dot, but not the same as in the colour-blind paletteWhy are you dividing by 307? You should divide by 255. Duncan Murdoch