I am experiencing issues with trying to label points added to a ggplot via geom_point. I think an underlying issue is the fact that I already used ggplot function to create a 5x5 risk matrix "background", but I am not certain. I have tried multiple solutions online but cannot find one that has a similar the background plotting I am attempting. I have attached the .R file and a picture of what I am creating minus the buggy text labels. Code is also pasted below. Thanks, William library(ggplot2) Project<-c("C","C","C","C","C","B","B","B","D","E","E","F","F","F","F") Prob<-c(3,3,3,2,2,2,2,2,3,4,3,5,4,3,3) con<-c(3.675941831,2.354582402,2.354582402,2.354582402,1.95075378,3.0602443,3.0602443,3.283695274,1.904452395,3.579022044,3.579022044,2.58190428,1.76065948,2.365243619,1.354491286) test2<-data.frame(Project,Prob,con) ### build risk coloring matrix ### myData <- matrix(c(1,2,3,3,3,1,2,2,3,3,1,1,2,2,3,1,1,2,2,2,1,1,1,1,2), nrow = 5, ncol = 5, byrow = TRUE) rownames(myData) <- c("5", "4", "3", "2","1") colnames(myData) <- c("1", "2", "3", "4","5") ### convert to data frame ### longData <- melt(myData) colnames(longData) <- c("Probability", "Consequence", "value") longData$value<-as.factor(longData$value) ### define color tiles ### color<-c("green" ,"green" ,"green","green" ,"green", "yellow","yellow","green","green" ,"green", "red" ,"yellow","yellow","yellow","green", "red" ,"red" ,"yellow","yellow","green", "red" ,"red" ,"red" ,"yellow","yellow") ### create color background 5x5 ### zp1 <- ggplot(longData,aes(x = Consequence, y = Probability)) #, fill = value)) zp1 <- zp1 + geom_tile(fill = color) zp1 <- zp1 + scale_x_continuous(breaks = 0:6, expand = c(0, 0)) zp1 <- zp1 + scale_y_continuous(breaks = 0:6, expand = c(0, 0)) zp1 <- zp1 + coord_fixed() zp1 <- zp1 + theme_bw() print(zp1) ### Add title and lines ### zp1 <- zp1 + ggtitle("5x5 Plot")+theme(plot.title = element_text(hjust = 0.5)) zp1 <- zp1 + geom_vline(xintercept=c(1.5:5.5)) zp1 <- zp1 + geom_hline(yintercept=c(1.5:5.5)) print(zp1) ### Plot points ### zp1 <- zp1 + geom_point(data=test2, x=test2$con, y=test2$Prob, alpha = 1, size = 9, color = "blue") print(zp1) ### This is the line I cannot get working; tried multiple approaches ### ### intent is to add white labels to plotted points ### zp1 <- zp1 + geom_text(data=test2, label = test2$Project, size = 6, color = "white") print(zp1) -------------- next part -------------- A non-text attachment was scrubbed... Name: test.png Type: image/png Size: 3565 bytes Desc: test.png URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20181127/6a39fe20/attachment.png>
Hi, I had to include library(reshape2) to get things working as you use melt(). Explicitly setting the x and y values in geom_text() is needed since you are providing new data. zp1 <- zp1 + geom_text(data=test2, x=test2$con, y=test2$Prob, label = test2$Project, size = 6, color = "white") Cheers, Ben> On Nov 27, 2018, at 3:04 PM, Reith, William [USA] <reith_william at bah.com> wrote: > > I am experiencing issues with trying to label points added to a ggplot via geom_point. I think an underlying issue is the fact that I already used ggplot function to create a 5x5 risk matrix "background", but I am not certain. I have tried multiple solutions online but cannot find one that has a similar the background plotting I am attempting. > > I have attached the .R file and a picture of what I am creating minus the buggy text labels. Code is also pasted below. > > Thanks, > > William > > > library(ggplot2) > > Project<-c("C","C","C","C","C","B","B","B","D","E","E","F","F","F","F") > Prob<-c(3,3,3,2,2,2,2,2,3,4,3,5,4,3,3) > con<-c(3.675941831,2.354582402,2.354582402,2.354582402,1.95075378,3.0602443,3.0602443,3.283695274,1.904452395,3.579022044,3.579022044,2.58190428,1.76065948,2.365243619,1.354491286) > test2<-data.frame(Project,Prob,con) > > ### build risk coloring matrix ### > myData <- matrix(c(1,2,3,3,3,1,2,2,3,3,1,1,2,2,3,1,1,2,2,2,1,1,1,1,2), nrow = 5, ncol = 5, byrow = TRUE) > rownames(myData) <- c("5", "4", "3", "2","1") > colnames(myData) <- c("1", "2", "3", "4","5") > > ### convert to data frame ### > longData <- melt(myData) > colnames(longData) <- c("Probability", "Consequence", "value") > longData$value<-as.factor(longData$value) > > ### define color tiles ### > color<-c("green" ,"green" ,"green","green" ,"green", > "yellow","yellow","green","green" ,"green", > "red" ,"yellow","yellow","yellow","green", > "red" ,"red" ,"yellow","yellow","green", > "red" ,"red" ,"red" ,"yellow","yellow") > > ### create color background 5x5 ### > zp1 <- ggplot(longData,aes(x = Consequence, y = Probability)) #, fill = value)) > zp1 <- zp1 + geom_tile(fill = color) > zp1 <- zp1 + scale_x_continuous(breaks = 0:6, expand = c(0, 0)) > zp1 <- zp1 + scale_y_continuous(breaks = 0:6, expand = c(0, 0)) > zp1 <- zp1 + coord_fixed() > zp1 <- zp1 + theme_bw() > print(zp1) > > ### Add title and lines ### > zp1 <- zp1 + ggtitle("5x5 Plot")+theme(plot.title = element_text(hjust = 0.5)) > zp1 <- zp1 + geom_vline(xintercept=c(1.5:5.5)) > zp1 <- zp1 + geom_hline(yintercept=c(1.5:5.5)) > print(zp1) > > ### Plot points ### > zp1 <- zp1 + geom_point(data=test2, x=test2$con, y=test2$Prob, alpha = 1, size = 9, color = "blue") > print(zp1) > > ### This is the line I cannot get working; tried multiple approaches ### > ### intent is to add white labels to plotted points ### > zp1 <- zp1 + geom_text(data=test2, label = test2$Project, size = 6, color = "white") > print(zp1) > <test.png>______________________________________________ > 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.Ben Tupper Bigelow Laboratory for Ocean Sciences 60 Bigelow Drive, P.O. Box 380 East Boothbay, Maine 04544 http://www.bigelow.org Ecological Forecasting: https://eco.bigelow.org/ [[alternative HTML version deleted]]
Hello, Your code works but I suggest the following: 1) Instead of loading reshape2 to be used just once longData <- reshape2::melt(myData) 2) In the call to geom_text, aes() will find the x, y, etc values: zp1 + geom_text(data=test2, aes(x = con, y = Prob, label = Project, size = 6, color = "white")) 3) To the OP. By naming the graphic object zp1 in all instructions, including the last one where the error occurs, you are forcing us to run the previous code every time we test a solution. It would be better to do something like # Ben's code zp2 <- zp1 + geom_text(data=test2, x=test2$con, y=test2$Prob, label = test2$Project, size = 6, color = "white") # An alternative zp2 <- zp1 + geom_text(data=test2, aes(x = con, y = Prob, label = Project, size = 6, color = "white")) On both cases, only one code line to run. Hope this helps, Rui Barradas ?s 20:30 de 27/11/2018, Ben Tupper escreveu:> Hi, > > I had to include > > library(reshape2) > > to get things working as you use melt(). Explicitly setting the x and y values in geom_text() is needed since you are providing new data. > > zp1 <- zp1 + geom_text(data=test2, x=test2$con, y=test2$Prob, label = test2$Project, size = 6, color = "white") > > > Cheers, > Ben > >> On Nov 27, 2018, at 3:04 PM, Reith, William [USA] <reith_william at bah.com> wrote: >> >> I am experiencing issues with trying to label points added to a ggplot via geom_point. I think an underlying issue is the fact that I already used ggplot function to create a 5x5 risk matrix "background", but I am not certain. I have tried multiple solutions online but cannot find one that has a similar the background plotting I am attempting. >> >> I have attached the .R file and a picture of what I am creating minus the buggy text labels. Code is also pasted below. >> >> Thanks, >> >> William >> >> >> library(ggplot2) >> >> Project<-c("C","C","C","C","C","B","B","B","D","E","E","F","F","F","F") >> Prob<-c(3,3,3,2,2,2,2,2,3,4,3,5,4,3,3) >> con<-c(3.675941831,2.354582402,2.354582402,2.354582402,1.95075378,3.0602443,3.0602443,3.283695274,1.904452395,3.579022044,3.579022044,2.58190428,1.76065948,2.365243619,1.354491286) >> test2<-data.frame(Project,Prob,con) >> >> ### build risk coloring matrix ### >> myData <- matrix(c(1,2,3,3,3,1,2,2,3,3,1,1,2,2,3,1,1,2,2,2,1,1,1,1,2), nrow = 5, ncol = 5, byrow = TRUE) >> rownames(myData) <- c("5", "4", "3", "2","1") >> colnames(myData) <- c("1", "2", "3", "4","5") >> >> ### convert to data frame ### >> longData <- melt(myData) >> colnames(longData) <- c("Probability", "Consequence", "value") >> longData$value<-as.factor(longData$value) >> >> ### define color tiles ### >> color<-c("green" ,"green" ,"green","green" ,"green", >> "yellow","yellow","green","green" ,"green", >> "red" ,"yellow","yellow","yellow","green", >> "red" ,"red" ,"yellow","yellow","green", >> "red" ,"red" ,"red" ,"yellow","yellow") >> >> ### create color background 5x5 ### >> zp1 <- ggplot(longData,aes(x = Consequence, y = Probability)) #, fill = value)) >> zp1 <- zp1 + geom_tile(fill = color) >> zp1 <- zp1 + scale_x_continuous(breaks = 0:6, expand = c(0, 0)) >> zp1 <- zp1 + scale_y_continuous(breaks = 0:6, expand = c(0, 0)) >> zp1 <- zp1 + coord_fixed() >> zp1 <- zp1 + theme_bw() >> print(zp1) >> >> ### Add title and lines ### >> zp1 <- zp1 + ggtitle("5x5 Plot")+theme(plot.title = element_text(hjust = 0.5)) >> zp1 <- zp1 + geom_vline(xintercept=c(1.5:5.5)) >> zp1 <- zp1 + geom_hline(yintercept=c(1.5:5.5)) >> print(zp1) >> >> ### Plot points ### >> zp1 <- zp1 + geom_point(data=test2, x=test2$con, y=test2$Prob, alpha = 1, size = 9, color = "blue") >> print(zp1) >> >> ### This is the line I cannot get working; tried multiple approaches ### >> ### intent is to add white labels to plotted points ### >> zp1 <- zp1 + geom_text(data=test2, label = test2$Project, size = 6, color = "white") >> print(zp1) >> <test.png>______________________________________________ >> 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. > > Ben Tupper > Bigelow Laboratory for Ocean Sciences > 60 Bigelow Drive, P.O. Box 380 > East Boothbay, Maine 04544 > http://www.bigelow.org > > Ecological Forecasting: https://eco.bigelow.org/ > > > > > > > [[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. >