столбец метки со значением заполнения счетчика в ggplot2

Я хотел бы пометить каждый столбец значением счетчика Fill_factor для этого конкретного столбца, но я не могу получить более одной метки на столбец.

mydata.df <- data.frame(Fill_factor = c("Fill1", "Fill3", "Fill1", "FILL2","Fill1","Fill1","FILL2", "FILL2","FILL3" ), Count = c("AA", "BB", "AA", "AA","CC","BB","AA", "BB", "CC" ))
q <- qplot(Count, data= mydata.df, fill= Fill_factor, geom="bar", position="fill") # base sub by gene names 
q + theme(axis.text.x=element_text(angle=-90, hjust = 1), text = element_text(size=10)) 

table(mydata.df$Count,mydata.df$Fill_factor)

 Fill1 FILL2 Fill3 FILL3
AA     2     2     0     0
BB     1     1     1     0
CC     1     0     0     1

Я также использую функцию ddply, но я не знаю, как получить правильное положение

mydata.df.count <- ddply(mydata.df, .(Fill_factor, Count), nrow)
colnames(mydata.df.count)  <- c("Fill_factor", "Count", "Frequency")

mydata.df.count <- ddply(mydata.df.count, .(Count), transform, pos = cumsum(Frequency)/5) # incorrect position

p = ggplot(mydata.df.count, aes(x = Count, y = Frequency), stat="identity") + geom_bar(aes(fill = Fill_factor), position="fill") + geom_text(aes(label = Frequency, y = pos), size = 5)
p

Как разместить текстовые метки в нужном месте (несколько текстов в столбце), используя аргумент position="fill"? и как я могу отсортировать уровни Count, чтобы упорядочить самый высокий коэффициент заполнения == "fill1"?

Спасибо!


person user3300849    schedule 17.02.2014    source источник
comment
На SO есть довольно много хороших ответов на эту тему: stackoverflow.com/   -  person Henrik    schedule 17.02.2014
comment
Вот как пометить столбчатую диаграмму с накоплением гистограмма в ggplot2"> stackoverflow.com/questions/6644997/   -  person lukeA    schedule 17.02.2014
comment
Я не знаю, но мне всегда не хватает аргументов y и ymax, я не знаю, как получить аргумент позиции и значение y   -  person user3300849    schedule 17.02.2014


Ответы (1)


Вы должны связать кумулятивную частоту с общей частотой, а затем отрегулировать метки по вертикали.

Код:

mydata.df.count <- ddply(mydata.df.count, .(Count), transform, pos = cumsum(Frequency)/sum(Frequency))

ggplot(mydata.df.count, aes(x = Count, y = Frequency, fill = Fill_factor)) + 
  geom_bar(stat="identity", position="fill") + 
  geom_text(aes(y = pos, label = Frequency), vjust = 3)

Результат: введите здесь описание изображения

person Jaap    schedule 17.02.2014