Ответ 1
Как и во многих задачах в ggplot, общая стратегия заключается в том, чтобы добавить то, что вы хотите добавить к графику в кадр данных таким образом, чтобы переменные соответствовали переменным и эстетике в вашем заговоре. Например, вы должны создать новый кадр данных, например:
dfTab <- as.data.frame(table(df))
colnames(dfTab)[1] <- "x"
dfTab$lab <- as.character(100 * dfTab$Freq / sum(dfTab$Freq))
Итак, переменная x
соответствует соответствующей переменной в df
и т.д. Затем вы просто включаете его с помощью geom_text
:
ggplot(df) + geom_bar(aes(x,fill=x)) +
geom_text(data=dfTab,aes(x=x,y=Freq,label=lab),vjust=0) +
opts(axis.text.x=theme_blank(),axis.ticks=theme_blank(),
axis.title.x=theme_blank(),legend.title=theme_blank(),
axis.title.y=theme_blank())
В этом примере будут отображаться только проценты, но вы можете paste
вместе подсчитывать также через что-то вроде этого:
dfTab$lab <- paste(dfTab$Freq,paste("(",dfTab$lab,"%)",sep=""),sep=" ")
Обратите внимание, что в текущей версии ggplot2 opts
устарел, поэтому мы теперь будем использовать theme
и element_blank
.