В соответствии с ответом на linked question, добавляя position = position_dodge(width=0.9)
к geom_text
вызова линий до значений:
ggplot(meltedLikert[meltedLikert$variable != "age",],
aes(variable, count, fill=score)) +
geom_bar(position="dodge", stat="identity") +
geom_text(data=data.frame(meltedLikert),
aes(variable, count, group=score, label=meltedLikert$score),
position = position_dodge(width=0.9),
size=4) +
facet_grid(age ~ .)
Однако, я также хотел бы отметить несколько других вещей. Вы не должны использовать meltedLikert$score
в вызове aes()
; вы должны ссылаться только на вещи в кадре данных, которые передаются как data
. Кроме того, meltedLikert
уже есть data.frame
, поэтому называть data.frame()
не нужно (хотя и не навреди).
Реальное улучшение заключается в том, как вы создаете свои табуляции для начала. Рассмотрим вместо этого:
tabulatedLikert <- ldply(likert[-1], function(sc) {
as.data.frame(table(age = likert$age, score = sc))
})
ggplot(tabulatedLikert, aes(x=.id, y=Freq, fill=score)) +
geom_bar(position="dodge", stat="identity") +
geom_text(aes(label=score), position=position_dodge(width=0.9), size=4) +
facet_grid(age ~ .)
Вы можете установить порядок расположения стержней, фиксируя их в исходных данных:
likert2 <- mutate(likert,
score1 = factor(score1, levels=c("unlikely", "likely", "very likely")),
score2 = factor(score2, levels=c("disagree", "neutral", "agree")),
score3 = factor(score3, levels=c("no", "maybe", "yes")))
tabulatedLikert2 <- ldply(likert2[-1], function(sc) {
as.data.frame(table(age = likert2$age, score = sc))
})
ggplot(tabulatedLikert2, aes(x=.id, y=Freq, fill=score)) +
geom_bar(position="dodge", stat="identity") +
geom_text(aes(label=score), position=position_dodge(width=0.9), size=4) +
facet_grid(age ~ .)
Конечно, в этой точке , цвета фактически ничего не добавляют, поскольку все помечено непосредственно на графике, поэтому я просто полностью избавлюсь от них.
ggplot(tabulatedLikert2, aes(x=.id, y=Freq, group=score)) +
geom_bar(position="dodge", stat="identity", fill="gray70") +
geom_text(aes(label=score), position=position_dodge(width=0.9), size=4) +
facet_grid(age ~ .)
Спасибо за ответ в глубине - я узнал много там – luciano
Другой Possiblity: 'ggplot (tabulatedLikert2, АЕС (х = оценка, у = Freq)) + geom_bar (стат =» идентичность ", fill =" gray70 ") + geom_text (aes (label = score), size = 4) + facet_grid (age ~ .id, scale =" free_x ")' – bdemarest