David Doyle
2017-Sep-26 19:51 UTC
[R] Adding non-data line to legend ggplot2 Maximum Contaminant Level
Hello everyone, I have a plot showing chloride concentrations for various point over time. I also have a dotted line that show the Secondary Maximum Contaminant Level (my screening limit) on the graphs at 250 mg/L. But I can not figure out how to include the dotted line / Secondary Maximum Contaminant Level in the legend. Any thoughts? My code is as following and is linked to my data on the net. Thank you in advance David #Loads the ggplot2 package. library(ggplot2) ##This loads your data from your worksheet MyData <-read.csv("http://doylesdartden.com/Stats/TimeSeriesExample.csv", sep=",") #Sets which are detections and nondetects MyData$Detections <- ifelse(MyData$D_Chloride ==1, "Detected", "NonDetect") #does the plot p <- ggplot(data = MyData, aes(x=Year, y=Chloride , col=Detections)) + geom_point(aes(shape=Detections)) + #sets the detect vs. non-detect colors scale_colour_manual(values=c("black","red")) + #sets the y scale and log base 10 scale_y_log10() + ##adds line geom_hline(aes(yintercept=250),linetype="dashed")+ #location of the legend theme(legend.position=c("right")) + #sets the line color, type and size geom_line(colour="black", linetype="dotted", size=0.5) + ylab("Chloride (mg/L)") ## does the graph using the Location IDs as the different Locations. p + facet_grid(Location ~ .) [[alternative HTML version deleted]]
John Kane
2017-Oct-01 10:44 UTC
[R] Adding non-data line to legend ggplot2 Maximum Contaminant Level
I just glanced at the problem but I think you would have to create a new variable to replace the hline. What about adding some text annotation in the graph instead? On Tuesday, September 26, 2017, 3:51:46 PM EDT, David Doyle <kydaviddoyle at gmail.com> wrote: Hello everyone, I have a plot showing chloride concentrations for various point over time. I also have a dotted line that show the Secondary Maximum Contaminant Level (my screening limit) on the graphs at 250 mg/L.? But I can not figure out how to include the dotted line / Secondary Maximum Contaminant Level in the legend.? Any thoughts?? My code is as following and is linked to my data on the net. Thank you in advance David #Loads the ggplot2 package. library(ggplot2) ##This loads your data from your worksheet MyData <-read.csv("http://doylesdartden.com/Stats/TimeSeriesExample.csv", sep=",") #Sets which are detections and nondetects MyData$Detections <- ifelse(MyData$D_Chloride ==1, "Detected", "NonDetect") #does the plot p <- ggplot(data = MyData, aes(x=Year, y=Chloride , col=Detections)) + ? geom_point(aes(shape=Detections)) + ? #sets the detect vs. non-detect colors ? scale_colour_manual(values=c("black","red")) + ? #sets the y scale and log base 10 ? scale_y_log10() + ? ##adds line ? geom_hline(aes(yintercept=250),linetype="dashed")+ ? #location of the legend ? theme(legend.position=c("right")) + ? #sets the line color, type and size ? geom_line(colour="black", linetype="dotted", size=0.5) + ? ylab("Chloride (mg/L)") ## does the graph using the Location IDs as the different Locations. p + facet_grid(Location ~ .) ??? [[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. [[alternative HTML version deleted]]
John Kane
2017-Oct-05 13:49 UTC
[R] Adding non-data line to legend ggplot2 Maximum Contaminant Level
Well, here is one way but it seems a bit clumsy. In words, I created a new data.frame with "250" in the Chloride vector and "SMCL" in the Detections vector and supplessed one legend. Warning: For my convenience I am using different data.frame names . library(ggplot2) MyData <-read.csv("http://doylesdartden.com/Stats/TimeSeriesExample.csv", sep=",") MyData$Detections <- ifelse(MyData$D_Chloride ==1, "Detected", "NonDetect") dat1 <-? MyData[, c(1, 3, 4, 6)] dat2 <-? dat1[, c(1,2)] dat2$Detections <-? rep("SMCL", nrow(dat2)) dat$Chloride <-? rep(250, nrow(dat2)) dat3 <-? rbind(dat1, dat2) p <-? ggplot(dat3, aes(Year, Chloride, colour = Detections)) + ?????????? geom_point(aes(shape=Detections), show.legend = F) + ?????????? geom_line( aes(Year, Chloride)) On Tuesday, October 3, 2017, 3:17:00 PM EDT, David Doyle <kydaviddoyle at gmail.com> wrote: Hi John, I used your recommendation of adding a new variable (see below) and it is plotting the line at the 250 mg/L mark but I still can not figure out how to get it added to the legend. Thanks again for your help. David #Loads the ggplot2 package.? NOTE you have to install it before hand.library(ggplot2) ##This loads your data from your worksheetMyData <-read.csv("http://doylesdartden.com/Stats/TimeSeriesExample.csv", sep=",") #Sets which are detections and nondetects MyData$Detections <- ifelse(MyData$D_Chloride ==1, "Detected", "NonDetect") # adds my screening LevelMyData$SMCL <- rep(250, nrow(MyData)) #does the plotp <- ggplot(data = MyData, aes(x=Year, y=Chloride, col=Detections)) +? geom_point(aes(shape=Detections)) +? geom_line(data = MyData,aes(y=SMCL))+?? ?#sets the detect vs. non-detect colors? scale_colour_manual(values=c("black","red")) +???? #sets the y scale and log base 10? scale_y_log10() +??? #location of the legend??? theme(legend.position=c("right")) +??? #sets the line color, type and size? geom_line(colour="black", linetype="dotted", size=0.5) +? ? ylab("Chloride (mg/L)") ## does the graph using the Location IDs as the different Locations.p + facet_grid(Location ~ .) On Mon, Oct 2, 2017 at 5:09 AM, John Kane <jrkrideau at yahoo.ca> wrote: MyData$newvar <- rep(250, nrow(MyData)) Again, I have not tried graphing this. On Sunday, October 1, 2017, 10:38:09 PM EDT, David Doyle <kydaviddoyle at gmail.com> wrote: Hi John, How do I add a second y variable??ThanksDavid On Sun, Oct 1, 2017 at 5:44 AM, John Kane <jrkrideau at yahoo.ca> wrote: I just glanced at the problem but I think you would have to create a new variable to replace the hline. What about adding some text annotation in the graph instead? On Tuesday, September 26, 2017, 3:51:46 PM EDT, David Doyle <kydaviddoyle at gmail.com> wrote: Hello everyone, I have a plot showing chloride concentrations for various point over time. I also have a dotted line that show the Secondary Maximum Contaminant Level (my screening limit) on the graphs at 250 mg/L.? But I can not figure out how to include the dotted line / Secondary Maximum Contaminant Level in the legend.? Any thoughts?? My code is as following and is linked to my data on the net. Thank you in advance David #Loads the ggplot2 package. library(ggplot2) ##This loads your data from your worksheet MyData <-read.csv("http:// doylesdartden.com/Stats/ TimeSeriesExample.csv", sep=",") #Sets which are detections and nondetects MyData$Detections <- ifelse(MyData$D_Chloride ==1, "Detected", "NonDetect") #does the plot p <- ggplot(data = MyData, aes(x=Year, y=Chloride , col=Detections)) + ? geom_point(aes(shape= Detections)) + ? #sets the detect vs. non-detect colors ? scale_colour_manual(values=c(" black","red")) + ? #sets the y scale and log base 10 ? scale_y_log10() + ? ##adds line ? geom_hline(aes(yintercept=250) ,linetype="dashed")+ ? #location of the legend ? theme(legend.position=c(" right")) + ? #sets the line color, type and size ? geom_line(colour="black", linetype="dotted", size=0.5) + ? ylab("Chloride (mg/L)") ## does the graph using the Location IDs as the different Locations. p + facet_grid(Location ~ .) ??? [[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. [[alternative HTML version deleted]]