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.
Scatter plot - using colour to group points?
10 messages · R. Michael Weylandt, SarahH, David Winsemius +2 more
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.
______________________________________________ R-help at 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.
David Winsemius, MD West Hartford, CT
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 <sarah.g10 at hotmail.co.uk> 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.
______________________________________________ R-help at 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.
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 <sarah.g10 at .co> 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.
______________________________________________ R-help@ 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.
______________________________________________ R-help@ 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.
-- View this message in context: http://r.789695.n4.nabble.com/Scatter-plot-using-colour-to-group-points-tp4092794p4093337.html Sent from the R help mailing list archive at Nabble.com.
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. Michael
On Mon, Nov 21, 2011 at 4:23 PM, SarahH <sarah.g10 at hotmail.co.uk> wrote:
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 <sarah.g10 at .co> 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.
______________________________________________ R-help@ 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.
______________________________________________ R-help@ 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.
-- View this message in context: http://r.789695.n4.nabble.com/Scatter-plot-using-colour-to-group-points-tp4092794p4093337.html Sent from the R help mailing list archive at Nabble.com.
______________________________________________ R-help at 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.
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. -- David.
Michael On Mon, Nov 21, 2011 at 4:23 PM, SarahH <sarah.g10 at hotmail.co.uk> wrote:
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 <sarah.g10 at .co> 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.
______________________________________________ R-help@ 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.
______________________________________________ R-help@ 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.
-- View this message in context: http://r.789695.n4.nabble.com/Scatter-plot-using-colour-to-group-points-tp4092794p4093337.html Sent from the R help mailing list archive at Nabble.com.
______________________________________________ R-help at 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.
______________________________________________ R-help at 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.
David Winsemius, MD West Hartford, CT
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
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.
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 <sarah.g10 at hotmail.co.uk> 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.
______________________________________________ R-help at 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.
Success with the lines command and col argument! I have some nice point and line plots. Thanks so much for you help. Ongoing project - I will probably be back! Sarah -- View this message in context: http://r.789695.n4.nabble.com/Scatter-plot-using-colour-to-group-points-tp4092794p4097625.html Sent from the R help mailing list archive at Nabble.com.