bharat rawlley
2021-Aug-19 16:52 UTC
[R] Help needed in double bar plot made using ggplot2
Hello I have tried to create the following graph using ggplot2 using the following code -? ggplot(aes(x=year, y=percentage, group=gender, fill=gender), data = graph_text)+? geom_bar(position = 'dodge', stat='identity')+? scale_y_continuous(expand = c(0,0))+? theme_classic()+? geom_text(aes(label = percentage), size = 5, position = position_dodge(width = 0.5), vjust=0) I wanted to ask? 1) In the last plot why is the label on top not showing up even when I save the image as a pdf?? 2) Is there anyway to make the labels appear in the middle of the bar? It is aligned to the left right now 3) Is there any way to change the colour of the labels on the top of the bars?? Thank you!? -------------- next part -------------- A non-text attachment was scrubbed... Name: 1629391809673blob.jpg Type: image/png Size: 35018 bytes Desc: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20210819/8fa15ba9/attachment.png>
Hello, First, sample data. set.seed(2021) year <- rep(2016:2019, 2) percentage <- runif(length(year), 0.25, 0.70) gender <- rep(c("M", "F"), each = 4) graph_text <- data.frame(year, percentage, gender) 1) You have expand = c(0,0). Like this there is no space above the greatest bar. In order to make room, change to limits = c(0, ymax + 10 percent). 2) Make the width of the bars larger, position_dodge(width = 0.9) 3) Assign a aesthetic color in geom_text, if you want the bars and text colors to be the same, assign a value outside aes() if you want only one color for the text. See at the end. 4) Not asked but I use scales::percent to make the percentages automatic. Change back to your code if not needed. ymax <- max(graph_text$percentage) ggplot(aes(x=year, y=percentage, group=gender, fill=gender), data = graph_text)+ geom_bar(position = 'dodge', stat='identity')+ geom_text( aes(label = scales::percent(percentage, accuracy = 0.1), color = gender), position = position_dodge(width = 0.9), size = 5, vjust = 0 )+ scale_y_continuous( limits = c(0, 1.1*ymax), labels = scales::percent )+ theme_classic() The following geom_text will change the text labels color to red. geom_text( aes(label = scales::percent(percentage, accuracy = 0.1)), position = position_dodge(width = 0.9), # color = "red", # size = 5, vjust = 0 ) Hope this helps, Rui Barradas ?s 17:52 de 19/08/21, bharat rawlley via R-help escreveu:> Hello > I have tried to create the following graph using ggplot2 using the following code - > ggplot(aes(x=year, y=percentage, group=gender, fill=gender), data = graph_text)+? geom_bar(position = 'dodge', stat='identity')+? scale_y_continuous(expand = c(0,0))+? theme_classic()+? geom_text(aes(label = percentage), size = 5, position = position_dodge(width = 0.5), vjust=0) > > > I wanted to ask > 1) In the last plot why is the label on top not showing up even when I save the image as a pdf? > 2) Is there anyway to make the labels appear in the middle of the bar? It is aligned to the left right now > 3) Is there any way to change the colour of the labels on the top of the bars? > Thank you! > > > > > > > > > > > > > > ______________________________________________ > 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. >