Hi! I am new to R just 3 days in it and i apologize if my questions seem very trivial and consumed your valuable time. I am coding in perl and i stumbled upon R regarding plotting good statistical graphs. I tried the kmean clustering for a large matrix ,say > 150 * 150 . I tried the example code given in the tutorial to perform 2d plot # i ranges from 2 to 10 cl <- kmeans(x, i, 20) plot(x, col = cl$cluster) points(cl$centers, col = 1:i ) I see that there are only 8 colours defined , namely black,red,green,blue,cyan,magenta,yello,gray. How should i set my colour preferences to obtain my palette of colours? I checked in the totorial which talks about R.colors and palatte , but i failed to understand how to set it. Thank You Asha
Hi! There are more than 8 colors. x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2), matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2)) (cl <- kmeans(x, i, 20)) s <- c("tomato4", "turquoise", "slateblue", "wheat", "snow", "skyblue", "peru", "pink") # see at: colors() plot(x, col = s) points(cl$centers, col = s, pch = 8, cex=2) Best, Matthias> Hi! > > I am new to R just 3 days in it and i apologize if my > questions seem very > trivial and consumed your valuable time. > > I am coding in perl and i stumbled upon R regarding plotting good > statistical graphs. > > I tried the kmean clustering for a large matrix ,say > 150 * > 150 . I tried > the example code given in the tutorial to perform 2d plot > > # i ranges from 2 to 10 > cl <- kmeans(x, i, 20) > plot(x, col = cl$cluster) > points(cl$centers, col = 1:i ) > > I see that there are only 8 colours defined , namely > black,red,green,blue,cyan,magenta,yello,gray. > > How should i set my colour preferences to obtain my palette > of colours? I > checked in the totorial which talks about R.colors and > palatte , but i > failed to understand how to set it. > > Thank You > > Asha > > > ______________________________________________ > 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 >
TEMPL Matthias wrote:> Hi! > > There are more than 8 colors.Yes, e.g. for rgb space there are 16777216, see ?rgb. Uwe Ligges> x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2), > matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2)) > > (cl <- kmeans(x, i, 20)) > > s <- c("tomato4", "turquoise", "slateblue", "wheat", "snow", "skyblue", > "peru", "pink") > # see at: > colors() > > plot(x, col = s) > > points(cl$centers, col = s, pch = 8, cex=2) > > > Best, > Matthias > > > > > >>Hi! >> >>I am new to R just 3 days in it and i apologize if my >>questions seem very >>trivial and consumed your valuable time. >> >>I am coding in perl and i stumbled upon R regarding plotting good >>statistical graphs. >> >>I tried the kmean clustering for a large matrix ,say > 150 * >>150 . I tried >>the example code given in the tutorial to perform 2d plot >> >># i ranges from 2 to 10 >>cl <- kmeans(x, i, 20) >>plot(x, col = cl$cluster) >>points(cl$centers, col = 1:i ) >> >>I see that there are only 8 colours defined , namely >>black,red,green,blue,cyan,magenta,yello,gray. >> >>How should i set my colour preferences to obtain my palette >>of colours? I >>checked in the totorial which talks about R.colors and >>palatte , but i >>failed to understand how to set it. >> >>Thank You >> >>Asha >> >> >>______________________________________________ >>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 >> > > > ______________________________________________ > 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 getting back to your question about the palette there are a lot of ways to do this assuming you have just started a session palette() # will give #[1] "black" "red" "green3" "blue" "cyan" #[6] "magenta" "yellow" "gray" palette(rainbow(24)) # There's also 'heat.colors' & 'topo.colors' palette() # [1] "red" "#FF4000" "#FF8000" # [4] "#FFBF00" "yellow" "#BFFF00" # [7] "#80FF00" "#40FF00" "green" #[10] "#00FF40" "#00FF80" "#00FFBF" #[13] "cyan" "deepskyblue" "#0080FF" #[16] "#0040FF" "blue" "#4000FF" #[19] "#8000FF" "#BF00FF" "magenta" #[22] "#FF00BF" "#FF0080" "#FF0040" palette(rgb((0:15)/15, g=0,b=0, names=paste("red",0:15,sep="."))) palette() # [1] "black" "#110000" "#220000" "#330000" "#440000" # [6] "#550000" "#660000" "#770000" "#880000" "#990000" #[11] "#AA0000" "#BB0000" "#CC0000" "#DD0000" "red2" #[16] "red" If you are looking to use colours that take account of colour blindness you could try the package dichromat. (I think 2.1 will have some of this inbuilt) Once you look through the help files associated with some of these options you will find the way that best suits your method of working. Tom> -----Original Message----- > From: Uwe Ligges [mailto:ligges at statistik.uni-dortmund.de] > Sent: Wednesday, 30 March 2005 3:18 PM > To: TEMPL Matthias > Cc: r-help at stat.math.ethz.ch; Asha Jayanthi > Subject: Re: [R] 2d plotting and colours > > > TEMPL Matthias wrote: > > > Hi! > > > > There are more than 8 colors. > > Yes, e.g. for rgb space there are 16777216, see ?rgb. > > Uwe Ligges > > > > > x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2), > > matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2)) > > > > (cl <- kmeans(x, i, 20)) > > > > s <- c("tomato4", "turquoise", "slateblue", "wheat", > "snow", "skyblue", > > "peru", "pink") > > # see at: > > colors() > > > > plot(x, col = s) > > > > points(cl$centers, col = s, pch = 8, cex=2) > > > > > > Best, > > Matthias > > > > > > > > > > > >>Hi! > >> > >>I am new to R just 3 days in it and i apologize if my > >>questions seem very > >>trivial and consumed your valuable time. > >> > >>I am coding in perl and i stumbled upon R regarding plotting good > >>statistical graphs. > >> > >>I tried the kmean clustering for a large matrix ,say > 150 * > >>150 . I tried > >>the example code given in the tutorial to perform 2d plot > >> > >># i ranges from 2 to 10 > >>cl <- kmeans(x, i, 20) > >>plot(x, col = cl$cluster) > >>points(cl$centers, col = 1:i ) > >> > >>I see that there are only 8 colours defined , namely > >>black,red,green,blue,cyan,magenta,yello,gray. > >> > >>How should i set my colour preferences to obtain my palette > >>of colours? I > >>checked in the totorial which talks about R.colors and > >>palatte , but i > >>failed to understand how to set it. > >> > >>Thank You > >> > >>Asha > >> > >> > >>______________________________________________ > >>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 > >> > > > > > > ______________________________________________ > > 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 ______________________________________________ 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
Since I was only concentrating on colour issues and not on your specific problem I was just showing the possibilities. Does this code help n <- 5 par(mfrow = c(2,2)) palette("default") barplot(1:25,col = 1:25) palette(rainbow(n)) barplot(1:25,col = 1:25) palette(rgb((0:15)/15, g=0,b=0, names=paste("red",0:15,sep="."))) barplot(1:25,col = 1:25) require(cluster) x <- runif(100) * 8 + 2 cl <- kmeans(x, n) palette(rainbow(n)) plot(x, col = cl$cluster) abline(h = cl$centers, lty = 2,col = "grey" ) palette(palette()[order(cl$centers)]) points(x,col = cl$cluster,pch = 20,cex = 0.4) However you may wish to choose your colours in a way that is different from cl$cluster which is why I changed the palette before plotting the points. You should see that they now are ordered from bottom to top of the last plot. You could also choose to create a vector with your colours and then use the value in cl$cluster to select the colours mycols <- rainbow(n) plot(x,col = mycols[cl$cluster]) Tom> -----Original Message----- > From: Asha Jayanthi [mailto:ashajayanthi at hotmail.com] > Sent: Thursday, 31 March 2005 9:17 AM > To: r-help at stat.math.ethz.ch > Subject: RE: [R] 2d plotting and colours > > > Thank you very much. > > the code > plot(x, col = s) > points(cl$centers, col = s, pch = 8, cex=2) > > does not plot the points according to the group colors. The > plots are used > to identify the groups by colors > > That could be done by > > plot(x, col = cl$cluster) > > This means that we need to set the default colours , say col > = cl$cluster = > a set of group numbers say 1...10 should produce 10 distinct > colours points > grouped by colour. > > how to do this when you have more than 8 group colours to plot > > >From: "Mulholland, Tom" <Tom.Mulholland at dpi.wa.gov.au> > >To: <r-help at stat.math.ethz.ch>,"Asha Jayanthi" > <ashajayanthi at hotmail.com> > >Subject: RE: [R] 2d plotting and colours > >Date: Wed, 30 Mar 2005 15:59:46 +0800 > > > >And getting back to your question about the palette > > > >there are a lot of ways to do this > > > >assuming you have just started a session > > > >palette() > ># will give > >#[1] "black" "red" "green3" "blue" "cyan" > >#[6] "magenta" "yellow" "gray" > > > >palette(rainbow(24)) # There's also 'heat.colors' & 'topo.colors' > >palette() > > > ># [1] "red" "#FF4000" "#FF8000" > ># [4] "#FFBF00" "yellow" "#BFFF00" > ># [7] "#80FF00" "#40FF00" "green" > >#[10] "#00FF40" "#00FF80" "#00FFBF" > >#[13] "cyan" "deepskyblue" "#0080FF" > >#[16] "#0040FF" "blue" "#4000FF" > >#[19] "#8000FF" "#BF00FF" "magenta" > >#[22] "#FF00BF" "#FF0080" "#FF0040" > > > >palette(rgb((0:15)/15, g=0,b=0, names=paste("red",0:15,sep="."))) > >palette() > ># [1] "black" "#110000" "#220000" "#330000" "#440000" > ># [6] "#550000" "#660000" "#770000" "#880000" "#990000" > >#[11] "#AA0000" "#BB0000" "#CC0000" "#DD0000" "red2" > >#[16] "red" > > > >If you are looking to use colours that take account of > colour blindness > >you could try the package dichromat. (I think 2.1 will have > some of this > >inbuilt) > > > >Once you look through the help files associated with some of > these options > >you > >will find the way that best suits your method of working. > > > >Tom > > > > > > > > > > > > > > > -----Original Message----- > > > From: Uwe Ligges [mailto:ligges at statistik.uni-dortmund.de] > > > Sent: Wednesday, 30 March 2005 3:18 PM > > > To: TEMPL Matthias > > > Cc: r-help at stat.math.ethz.ch; Asha Jayanthi > > > Subject: Re: [R] 2d plotting and colours > > > > > > > > > TEMPL Matthias wrote: > > > > > > > Hi! > > > > > > > > There are more than 8 colors. > > > > > > Yes, e.g. for rgb space there are 16777216, see ?rgb. > > > > > > Uwe Ligges > > > > > > > > > > > > > x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2), > > > > matrix(rnorm(100, mean = 1, sd = 0.3), > ncol = 2)) > > > > > > > > (cl <- kmeans(x, i, 20)) > > > > > > > > s <- c("tomato4", "turquoise", "slateblue", "wheat", > > > "snow", "skyblue", > > > > "peru", "pink") > > > > # see at: > > > > colors() > > > > > > > > plot(x, col = s) > > > > > > > > points(cl$centers, col = s, pch = 8, cex=2) > > > > > > > > > > > > Best, > > > > Matthias > > > > > > > > > > > > > > > > > > > > > > > >>Hi! > > > >> > > > >>I am new to R just 3 days in it and i apologize if my > > > >>questions seem very > > > >>trivial and consumed your valuable time. > > > >> > > > >>I am coding in perl and i stumbled upon R regarding > plotting good > > > >>statistical graphs. > > > >> > > > >>I tried the kmean clustering for a large matrix ,say > 150 * > > > >>150 . I tried > > > >>the example code given in the tutorial to perform 2d plot > > > >> > > > >># i ranges from 2 to 10 > > > >>cl <- kmeans(x, i, 20) > > > >>plot(x, col = cl$cluster) > > > >>points(cl$centers, col = 1:i ) > > > >> > > > >>I see that there are only 8 colours defined , namely > > > >>black,red,green,blue,cyan,magenta,yello,gray. > > > >> > > > >>How should i set my colour preferences to obtain my palette > > > >>of colours? I > > > >>checked in the totorial which talks about R.colors and > > > >>palatte , but i > > > >>failed to understand how to set it. > > > >> > > > >>Thank You > > > >> > > > >>Asha > > > >>
I'm not sure that I understand you comment about the other examples not giving a wide palette. Are you using wide to refer to the difference in colours rather than the number of choices in the palette? If this is your issue you should look at the dichromat package that I referred to, in particular the colorRamp function. You might also want to have a look at the RColorBrewer package and run the ColorBrewer example. This package specifically deals with the ability to distinguish one colour from another.As the ColorBrewer website notes the tool is "designed to help people select good color schemes for maps and other graphics". By the way if the mycols code works then palette(c("brown","orange","tomato")) plot(x,col = cl$cluster) should produce exactly the same result. Tom> -----Original Message----- > From: Asha Jayanthi [mailto:ashajayanthi at hotmail.com] > Sent: Thursday, 31 March 2005 2:36 PM > To: Mulholland, Tom; r-help at stat.math.ethz.ch > Subject: RE: [R] 2d plotting and colours > > > Thank you. > > mycols <- c("brown","orange","tomato") > plot(x,col = mycols[cl$cluster]) > > this works. I can define distinct colours and check the graph. > > the rest of the examples does not give a wide palette to choose from > > Asha > >From: "Mulholland, Tom" <Tom.Mulholland at dpi.wa.gov.au> > >To: "Asha Jayanthi" > <ashajayanthi at hotmail.com>,<r-help at stat.math.ethz.ch> > >Subject: RE: [R] 2d plotting and colours > >Date: Thu, 31 Mar 2005 10:14:13 +0800 > > > >Since I was only concentrating on colour issues and not on > your specific > >problem I was just showing the possibilities. > > > >Does this code help > > > >n <- 5 > >par(mfrow = c(2,2)) > >palette("default") > >barplot(1:25,col = 1:25) > >palette(rainbow(n)) > >barplot(1:25,col = 1:25) > >palette(rgb((0:15)/15, g=0,b=0, names=paste("red",0:15,sep="."))) > >barplot(1:25,col = 1:25) > > > > > >require(cluster) > >x <- runif(100) * 8 + 2 > >cl <- kmeans(x, n) > >palette(rainbow(n)) > >plot(x, col = cl$cluster) > >abline(h = cl$centers, lty = 2,col = "grey" ) > >palette(palette()[order(cl$centers)]) > >points(x,col = cl$cluster,pch = 20,cex = 0.4) > > > >However you may wish to choose your colours in a way that is > different from > >cl$cluster which is why I changed the palette before > plotting the points. > >You should see that they now are ordered from bottom to top > of the last > >plot. > > > >You could also choose to create a vector with your colours > and then use the > >value in cl$cluster to select the colours > > > >mycols <- rainbow(n) > >plot(x,col = mycols[cl$cluster]) > > > >Tom > > > > > -----Original Message----- > > > From: Asha Jayanthi [mailto:ashajayanthi at hotmail.com] > > > Sent: Thursday, 31 March 2005 9:17 AM > > > To: r-help at stat.math.ethz.ch > > > Subject: RE: [R] 2d plotting and colours > > > > > > > > > Thank you very much. > > > > > > the code > > > plot(x, col = s) > > > points(cl$centers, col = s, pch = 8, cex=2) > > > > > > does not plot the points according to the group colors. The > > > plots are used > > > to identify the groups by colors > > > > > > That could be done by > > > > > > plot(x, col = cl$cluster) > > > > > > This means that we need to set the default colours , say col > > > = cl$cluster > > > a set of group numbers say 1...10 should produce 10 distinct > > > colours points > > > grouped by colour. > > > > > > how to do this when you have more than 8 group colours to plot > > > > > > >From: "Mulholland, Tom" <Tom.Mulholland at dpi.wa.gov.au> > > > >To: <r-help at stat.math.ethz.ch>,"Asha Jayanthi" > > > <ashajayanthi at hotmail.com> > > > >Subject: RE: [R] 2d plotting and colours > > > >Date: Wed, 30 Mar 2005 15:59:46 +0800 > > > > > > > >And getting back to your question about the palette > > > > > > > >there are a lot of ways to do this > > > > > > > >assuming you have just started a session > > > > > > > >palette() > > > ># will give > > > >#[1] "black" "red" "green3" "blue" "cyan" > > > >#[6] "magenta" "yellow" "gray" > > > > > > > >palette(rainbow(24)) # There's also 'heat.colors' & > 'topo.colors' > > > >palette() > > > > > > > ># [1] "red" "#FF4000" "#FF8000" > > > ># [4] "#FFBF00" "yellow" "#BFFF00" > > > ># [7] "#80FF00" "#40FF00" "green" > > > >#[10] "#00FF40" "#00FF80" "#00FFBF" > > > >#[13] "cyan" "deepskyblue" "#0080FF" > > > >#[16] "#0040FF" "blue" "#4000FF" > > > >#[19] "#8000FF" "#BF00FF" "magenta" > > > >#[22] "#FF00BF" "#FF0080" "#FF0040" > > > > > > > >palette(rgb((0:15)/15, g=0,b=0, names=paste("red",0:15,sep="."))) > > > >palette() > > > ># [1] "black" "#110000" "#220000" "#330000" "#440000" > > > ># [6] "#550000" "#660000" "#770000" "#880000" "#990000" > > > >#[11] "#AA0000" "#BB0000" "#CC0000" "#DD0000" "red2" > > > >#[16] "red" > > > > > > > >If you are looking to use colours that take account of > > > colour blindness > > > >you could try the package dichromat. (I think 2.1 will have > > > some of this > > > >inbuilt) > > > > > > > >Once you look through the help files associated with some of > > > these options > > > >you > > > >will find the way that best suits your method of working. > > > > > > > >Tom > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -----Original Message----- > > > > > From: Uwe Ligges [mailto:ligges at statistik.uni-dortmund.de] > > > > > Sent: Wednesday, 30 March 2005 3:18 PM > > > > > To: TEMPL Matthias > > > > > Cc: r-help at stat.math.ethz.ch; Asha Jayanthi > > > > > Subject: Re: [R] 2d plotting and colours > > > > > > > > > > > > > > > TEMPL Matthias wrote: > > > > > > > > > > > Hi! > > > > > > > > > > > > There are more than 8 colors. > > > > > > > > > > Yes, e.g. for rgb space there are 16777216, see ?rgb. > > > > > > > > > > Uwe Ligges > > > > > > > > > > > > > > > > > > > > > x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2), > > > > > > matrix(rnorm(100, mean = 1, sd = 0.3), > > > ncol = 2)) > > > > > > > > > > > > (cl <- kmeans(x, i, 20)) > > > > > > > > > > > > s <- c("tomato4", "turquoise", "slateblue", "wheat", > > > > > "snow", "skyblue", > > > > > > "peru", "pink") > > > > > > # see at: > > > > > > colors() > > > > > > > > > > > > plot(x, col = s) > > > > > > > > > > > > points(cl$centers, col = s, pch = 8, cex=2) > > > > > > > > > > > > > > > > > > Best, > > > > > > Matthias > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>Hi! > > > > > >> > > > > > >>I am new to R just 3 days in it and i apologize if my > > > > > >>questions seem very > > > > > >>trivial and consumed your valuable time. > > > > > >> > > > > > >>I am coding in perl and i stumbled upon R regarding > > > plotting good > > > > > >>statistical graphs. > > > > > >> > > > > > >>I tried the kmean clustering for a large matrix ,say > 150 * > > > > > >>150 . I tried > > > > > >>the example code given in the tutorial to perform 2d plot > > > > > >> > > > > > >># i ranges from 2 to 10 > > > > > >>cl <- kmeans(x, i, 20) > > > > > >>plot(x, col = cl$cluster) > > > > > >>points(cl$centers, col = 1:i ) > > > > > >> > > > > > >>I see that there are only 8 colours defined , namely > > > > > >>black,red,green,blue,cyan,magenta,yello,gray. > > > > > >> > > > > > >>How should i set my colour preferences to obtain my palette > > > > > >>of colours? I > > > > > >>checked in the totorial which talks about R.colors and > > > > > >>palatte , but i > > > > > >>failed to understand how to set it. > > > > > >> > > > > > >>Thank You > > > > > >> > > > > > >>Asha > > > > > >> > > > > > >> > > > ______________________________________________ > > > 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