# Scatter plot - using colour to group points?

12 messages
Open this post in threaded view
|

## Scatter plot - using colour to group points?

 Dear All, I am very new to R - trying to teach myself it for some MSc coursework. I am plotting temperature data for two different sites over the same time period which I have downloaded from a university weather station data archive. I am using the following code to create the plot plot ( x = TEMP3[,"TIME"], y = TEMP3[,"TEMP"], type = "p", col = TEMP3[,"SITE"], pch = 3, main = "Temperature changes", xlab = "Date", ylab = "Temberature[C]") I managed to use col = TEMP3["SITE"] to plot the two different sites( BG1 and EA7) in different colours, but I am struggling to change the colours. I wanted to up a colour scheme to match the site, so tried BG1 <- "blue" EA7 <- "green" before the plot function, but the graphic just came out with red and black as before. There are other datasets in which there are more than two sites so I would really like to learn how to use colour to distinguish between them on a plot. Any direction would be very greatly received! Thank you very much Sarah
Open this post in threaded view
|

## Re: Scatter plot - using colour to group points?

 On Nov 21, 2011, at 2:17 PM, SarahH wrote: > Dear All, > > I am very new to R - trying to teach myself it for some MSc   > coursework. > > I am plotting temperature data for two different sites over the same   > time > period which I have downloaded from a university weather station data > archive. > > I am using the following code to create the plot > > plot ( x = TEMP3[,"TIME"], y = TEMP3[,"TEMP"], type = "p", col = > TEMP3[,"SITE"], pch = 3, main = "Temperature changes", xlab =   > "Date", ylab = > "Temberature[C]") > > I managed to use col = TEMP3["SITE"] to plot the two different   > sites( BG1 > and EA7) in different colours, but I am struggling to change the   > colours. > > I wanted to up a colour scheme to match the site, so tried Instead try num.site <- as.numeric(TEMP3[,"SITE"]) plot ( x = TEMP3[,"TIME"], y = TEMP3[,"TEMP"], type = "p", col = num.site, pch = 3, main = "Temperature changes", xlab = "Date", ylab = "Temberature[C]") Would create a vector of integer values that are specific to the sites   and then offere that as argument to col= > > BG1 <- "blue" > EA7 <- "green" That would only have created two new objects by that name (unless of   course you were following someone's misguided directions to use   attach().) > > before the plot function, but the graphic just came out with red and   > black > as before. > > There are other datasets in which there are more than two sites so I   > would > really like to learn how to use colour to distinguish between them   > on a > plot. > > Any direction would be very greatly received! > > Thank you very much > > Sarah > > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/Scatter-plot-using-colour-to-group-points-tp4092794p4092794.html> Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > [hidden email] 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. David Winsemius, MD West Hartford, CT ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Scatter plot - using colour to group points?

 In reply to this post by SarahH I think the easiest way to do this is to set up a color vector with ifelse and hand that off to the plot command: something like col = ifelse(TEMP3[,"SITE"] == "BG1", "blue", "green") # Syntax is ifelse(TEST, OUT_IF_TRUE, OUT_IF_FALSE) For more complicated schemes, a set of nested ifelse()'s can get you what you need. There are some other tricks with factors as well, but they require a little more advanced use of R. Just for the record, they'd look something like this: X = letters[c(1,2,3,3,1,2,1,3,3,1,2,2,1)] colX = c("red","green","blue")[as.factor(X)] Hope this helps, Michael On Mon, Nov 21, 2011 at 2:17 PM, SarahH <[hidden email]> wrote: > Dear All, > > I am very new to R - trying to teach myself it for some MSc coursework. > > I am plotting temperature data for two different sites over the same time > period which I have downloaded from a university weather station data > archive. > > I am using the following code to create the plot > > plot ( x = TEMP3[,"TIME"], y = TEMP3[,"TEMP"], type = "p", col = > TEMP3[,"SITE"], pch = 3, main = "Temperature changes", xlab = "Date", ylab = > "Temberature[C]") > > I managed to use col = TEMP3["SITE"] to plot the two different sites( BG1 > and EA7) in different colours, but I am struggling to change the colours. > > I wanted to up a colour scheme to match the site, so tried > > BG1 <- "blue" > EA7 <- "green" > > before the plot function, but the graphic just came out with red and black > as before. > > There are other datasets in which there are more than two sites so I would > really like to learn how to use colour to distinguish between them on a > plot. > > Any direction would be very greatly received! > > Thank you very much > > Sarah > > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/Scatter-plot-using-colour-to-group-points-tp4092794p4092794.html> Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > [hidden email] 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. ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Scatter plot - using colour to group points?

 I got the colour vector with ifelse to work, great! Thank you. Is it possible to use the ifelse colour vector with other plot types? For example with type=l ? I tried but the graphic came back with blue lines for both sites and also a straight line connecting the start and end point of the data? Thanks Sarah Michael Weylandt wrote I think the easiest way to do this is to set up a color vector with ifelse and hand that off to the plot command: something like col = ifelse(TEMP3[,"SITE"] == "BG1", "blue", "green") # Syntax is ifelse(TEST, OUT_IF_TRUE, OUT_IF_FALSE) For more complicated schemes, a set of nested ifelse()'s can get you what you need. There are some other tricks with factors as well, but they require a little more advanced use of R. Just for the record, they'd look something like this: X = letters[c(1,2,3,3,1,2,1,3,3,1,2,2,1)] colX = c("red","green","blue")[as.factor(X)] Hope this helps, Michael On Mon, Nov 21, 2011 at 2:17 PM, SarahH <[hidden email]> wrote: > Dear All, > > I am very new to R - trying to teach myself it for some MSc coursework. > > I am plotting temperature data for two different sites over the same time > period which I have downloaded from a university weather station data > archive. > > I am using the following code to create the plot > > plot ( x = TEMP3[,"TIME"], y = TEMP3[,"TEMP"], type = "p", col = > TEMP3[,"SITE"], pch = 3, main = "Temperature changes", xlab = "Date", ylab = > "Temberature[C]") > > I managed to use col = TEMP3["SITE"] to plot the two different sites( BG1 > and EA7) in different colours, but I am struggling to change the colours. > > I wanted to up a colour scheme to match the site, so tried > > BG1 <- "blue" > EA7 <- "green" > > before the plot function, but the graphic just came out with red and black > as before. > > There are other datasets in which there are more than two sites so I would > really like to learn how to use colour to distinguish between them on a > plot. > > Any direction would be very greatly received! > > Thank you very much > > Sarah > > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/Scatter-plot-using-colour-to-group-points-tp4092794p4092794.html> Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > [hidden email] 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. ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Scatter plot - using colour to group points?

 In reply to this post by SarahH Another approach would be to use ggplot2.  Code can look a bit daunting to begin with but ggplot2 is a very versitile graphing package and well worth learning. Simple example ============================================================= library(ggplot2) mydata <- data.frame(site=c("A","A","A", "B","B","B"), time1 = 1:6, t1=c(23,24,13,7,19,12),                         t2=c(7, 4,6,8,5,9))         p <- ggplot(mydata, aes(x=time1)) +     geom_point(aes(y= t1, colour= site)) +      geom_point(aes(y = t2, colour=site)) p   <- ggplot(mydata, aes(x=time1)) +     geom_point(aes(y= t1, colour= site)) +      geom_point(aes(y = t2, colour=site))       p <- p + scale_x_continuous('Time')+               scale_y_continuous('Temperature') p ============================================================= --- On Mon, 11/21/11, SarahH <[hidden email]> wrote: > From: SarahH <[hidden email]> > Subject: [R] Scatter plot - using colour to group points? > To: [hidden email] > Received: Monday, November 21, 2011, 2:17 PM > Dear All, > > I am very new to R - trying to teach myself it for some MSc > coursework. > > I am plotting temperature data for two different sites over > the same time > period which I have downloaded from a university weather > station data > archive. > > I am using the following code to create the plot > > plot ( x = TEMP3[,"TIME"], y = TEMP3[,"TEMP"], type = "p", > col = > TEMP3[,"SITE"], pch = 3, main = "Temperature changes", xlab > = "Date", ylab = > "Temberature[C]") > > I managed to use col = TEMP3["SITE"] to plot the two > different sites( BG1 > and EA7) in different colours, but I am struggling to > change the colours. > > I wanted to up a colour scheme to match the site, so tried > > > BG1 <- "blue" > EA7 <- "green" > > before the plot function, but the graphic just came out > with red and black > as before. > > There are other datasets in which there are more than two > sites so I would > really like to learn how to use colour to distinguish > between them on a > plot. > > Any direction would be very greatly received! > > Thank you very much > > Sarah > > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/Scatter-plot-using-colour-to-group-points-tp4092794p4092794.html> Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > [hidden email] > 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. > ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Scatter plot - using colour to group points?

Open this post in threaded view
|

## Re: Scatter plot - using colour to group points?

Open this post in threaded view
|

## Re: Scatter plot - using colour to group points?

 On 11/22/2011 05:00 PM, David Winsemius wrote: > > On Nov 21, 2011, at 10:18 PM, R. Michael Weylandt wrote: > >> I don't think you can do different colors for a single line (not an >> ifelse thing, just a what would that mean sort of thing), but a plot >> type like "b" "o" or "h" will work the same way. > > I think Jim Lemon has a multicolored line function in package:plotrix. > Hi David (and everybody else), The color.scale.lines function will display multicolored lines, just force the colors to what you want using the "col" argument. Jim ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Scatter plot - using colour to group points?

 In reply to this post by SarahH Thanks all for suggestions. I now have a nice plot showing the temperature of 6 different sites, each site distinguished by different coloured points, using nested ifelse. My apologies I thought I could change the type to "l" and the same arguments would be applied to line graph, with 6 different lines for each site...? I wanted to try lines as I think they might show the trends more clearly.   I have just found the plottrix package manual and will try that to achieve this, and look at ggplot too.
Open this post in threaded view
|

## Re: Scatter plot - using colour to group points?

 There's also the lines() command which takes a col argument if you want to do multiple lines (I usually wind up wrapping it in a for loop though there might be something smarter) ggplot2 is great, though the learning curve is a little rough: you can get good help here but if you go down that path, there's also a dedicated ggplot2 list that's worth checking out. Glad to have you as a new useR! Michael On Nov 22, 2011, at 5:13 AM, SarahH <[hidden email]> wrote: > Thanks all for suggestions. > > I now have a nice plot showing the temperature of 6 different sites, each > site distinguished by different coloured points, using nested ifelse. My > apologies I thought I could change the type to "l" and the same arguments > would be applied to line graph, with 6 different lines for each site...? > I wanted to try lines as I think they might show the trends more clearly.   > I have just found the plottrix package manual and will try that to achieve > this, and look at ggplot too. > > > -- > View this message in context: http://r.789695.n4.nabble.com/Scatter-plot-using-colour-to-group-points-tp4092794p4095079.html> Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > [hidden email] 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. ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.