I'm trying to create a bar plot with the depicted values written inside the bars using ggplot2. I still want to label the group with value "0" but in a different colour (black) and just above the x-axis. How can I change the position and colour of just this one geom_text?
I've already tried entering a vector into scale_colour_manual but it didn't work (or I didn't do it right).
data <- read.table(text = "group percentage
group1 30
group2 29
group3 0
group4 18", header=TRUE)
library(ggplot2)
ggplot(data, aes(x=group, y=percentage))+
theme_bw()+
geom_bar(stat = 'identity', position = "dodge", fill="#13449f")+
geom_text(aes(label = percentage), position = position_dodge(0.9),
vjust=1.3, colour = "white", size=6)
With this code there is no label for group3 since there is no bar either. I'd like to still have a label in black above the x-axis.
Via conditional logic:
library(ggplot2)
ggplot(data, aes(x = group, y = percentage))+
theme_bw()+
geom_bar(stat = 'identity', position = "dodge", fill = "#13449f") +
geom_text(aes(label = percentage), position = position_dodge(0.9),
vjust = ifelse(data$percentage > 3, 1.3, -0.3),
colour = ifelse(data$percentage > 3, "white", "black"),
size = 6)
With group3 == 3.1
What is comfortable about this approach:
Caveat of this approach:
> 3
should be calibrated for each visualization. It is possible to automatize that part if you dive deeper into how ggplot2 builds graphs, but it would be overkill for this small example.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With