I would like to adjust the text on the barplot.
I tried to adjust hjust/vjust to display as I like it but it seems like it\'s not working properly.
g
The position_dodge() statement takes a width parameter. To ensure that the text is centred at the end of the bars (i.e., the dodging width for the bars and the text to be the same), give the same width parameter to the position_dodge() statement within geom_bar and within geom_text.
There is also a width parameter for geom_bar, that is the width of the bars. If you want the bars to butt up against each other within each name, make the bar width the same as the dodging width; if you want a small gap between the bars, make the bar width a little less than the dodging width.
If you use global aesthetics, you will not need a group aesthetic (however, using only local aesthetics, you will need a group aesthetic for geom_text).
hjust = -0.5 will position the text labels just beyond the end of the bars; hjust = 1.5 positions them inside the end of the bars.
library(ggplot2)
# Generate some data - using @tchakravarty's data - Thanks.
df = data.frame(
week = as.factor(rep(c(1, 2), times = 5)),
name = as.factor(rep(LETTERS[1:5], times = 2)),
count = rpois(n = 10, lambda = 20))
position = position_dodge(width = .75)
width = .75
ggplot(df, aes(x = name, y = count, label = count, fill = week)) +
geom_bar(width = width, stat='identity', position = position) +
geom_text(hjust = -0.5, size = 2, position = position) +
coord_flip() +
theme_bw()
# To separate the bars slightly:
position = position_dodge(width = .75)
width = .65
ggplot(df, aes(x = name, y = count, label = count, fill = week)) +
geom_bar(width = width, stat='identity', position = position) +
geom_text(hjust = -0.5, size = 2, position = position) +
coord_flip() +
theme_bw()