Problema con geom_text quando si utilizza position_dodge

Ho visto questa risposta ma non sono riuscita a replicarla.

Ottengo i miei dati in questo modo:

df = data.frame(x = rep(sample(letters, 4), 2), y = round(runif(8,1,100),0), z = c(rep("group1",4), rep("group2",4))) # I then add a 'percent' column like so: df$perc[1:4] = df$y[1:4] / sum(df$y[1:4]) df$perc[5:8] = df$y[5:8] / sum(df$y[5:8]) # Which I then convert like so: df$perc = paste(round(df$perc * 100, 1), "%", sep="") # The ggplot: library(ggplot2) ggplot(df) + geom_bar(aes(z, y, fill=x), position="dodge", stat="identity") + geom_text(aes(z,y,label=perc), position=position_dodge(width=1), size=4) 

Risultato:

inserisci la descrizione dell'immagine qui

Non riesco a capire cosa ho fatto di sbagliato.

Solo un piccolo cambiamento risolve il problema. Devi specificare group=x all’interno della tua geom_text(aes(...)) .

 ggplot(df) + geom_bar(aes(z, y, fill=x), position=position_dodge(width=1), stat="identity") + geom_text(aes(z,y,label=perc, group=x), position=position_dodge(width=1), size=4) 

inserisci la descrizione dell'immagine qui