R histogramme empilé tracé geom_text

Je suis en train de tracer un histogramme empilé dans R à l'aide de ggplot. Je tiens également à inclure pourcentage dans chaque pièce de bars pour cette pièce. J'ai essayé de suivre les posts Un, Deux, Trois mais les valeurs ne sont pas exactement dans leurs blocs respectifs. Mes données est un fichier dans dropbox.

Mon code est comme suit:

f<-read.table("Input.txt", sep="\t", header=TRUE)

ggplot(data=f, aes(x=Form, y=Percentage, fill=Position)) + 
    geom_bar(stat="identity", colour="black") + 
    geom_text(position="stack", aes(x=Form, y=Percentage, ymax=Percentage, label=Percentage, hjust=0.5)) + 
    facet_grid(Sample_name ~ Sample_type, scales="free", space="free") + 
    opts(title = "Input_profile", 
         axis.text.x = theme_text(angle = 90, hjust = 1, size = 8, colour = "grey50"), 
         plot.title = theme_text(face="bold", size=11), 
         axis.title.x = theme_text(face="bold", size=9), 
         axis.title.y = theme_text(face="bold", size=9, angle=90),
         panel.grid.major = theme_blank(), 
         panel.grid.minor = theme_blank()) + 
    scale_fill_hue(c=45, l=80)

ggsave("Output.pdf")

La sortie est-

R histogramme empilé tracé geom_text

Toute aide est grandement appréciée.
Je vous remercie pour votre aide et le temps!

Pensez-y la valeur que vous donnez à geom_text. C'est la hauteur de chaque barre segment. Vous devez faire de l'arithmétique pour calculer la médiane (ou en haut, ou quoi que ce soit) de chaque barre segment, ajoutez-le comme une variable distincte et l'utiliser comme la variable y dans geom_text. La fonction cumsum peut être utile.
Quelque chose comme ceci permettra de calculer les positions y pour les étiquettes au milieu de chaque barre de segment: f <- ddply(f, .(Form, Sample_name, Sample_type), transform, pos = (cumsum(Percentage) - 0.5 * Percentage)) (nécessite plyr), puis le geom_text déclaration doit être: geom_text(aes(x=Form, y=pos, label=Percentage))

OriginalL'auteur smandape | 2013-02-18