Неверные метки метки geom_text

Я пытаюсь создать граф в R с ggplot. График прекрасен, пока я не попытаюсь добавить метки с geom_text.

Данные:

year <-c(2016,2017,2016,2017,2016,2017,2016,2017,2016,2017,2016,2017,2016,2017)
age <- c("0-15","0-15","16-25","16-25","26-35","26-35","36-45","36-45","46-55","46-55","56-65","56-65","66+","66+")
deaths <- c(10,4,40,33,38,28,23,22,18,22,13,16,44,33)
age_group <- factor(age)
fyear <- factor(year)

ideaths <- data.frame(fyear,age_group,deaths)

Это код, который я до сих пор

ggplot(data = ideaths,mapping = aes(x = age_group, y=deaths, 
fill=fyear)) +
geom_bar(position = "dodge", stat="identity", width=0.5) + 
geom_text(label=deaths,vjust=-0.5) + ggtitle("Figure 8.") +
scale_fill_manual(values=c("#7F7F7F","#94D451")) +
scale_y_continuous(breaks=seq(0,55,5)) + theme_light() +
theme(panel.border = element_blank(), panel.grid.major.x = 
element_blank(), panel.grid.minor.y = 
element_blank(),panel.grid.major.y = element_line( size=.1, 
color="grey"), axis.title = element_blank(), legend.position 
= "bottom", legend.title=element_blank(), plot.title 
=element_text(size=10))  

Который дает мне этот график:

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

Я искал, как выровнять метки с полосками и найти position=position_dodge(width=0.9)

Однако это помещает ярлык поверх неправильного бара для меня. Если у кого-то есть представление о том, как это исправить, или о том, что вызывает его в первую очередь, мы будем очень благодарны!

Всего 1 ответ


Вам нужно поставить label = deaths внутри aes() поэтому ggplot знает, что ему нужно использовать столбец deaths внутри ideaths данных ideaths не отдельный вектор deaths

 library(ggplot2) ggplot(data = ideaths, aes(x = age_group, y = deaths, fill = fyear)) + geom_col(position = position_dodge(width = 0.9)) + geom_text(aes(x = age_group, y = deaths + 3, label = deaths), position = position_dodge(width = 0.9)) + ggtitle("Figure 8.") + scale_fill_manual(values = c("#7F7F7F", "#94D451")) + scale_y_continuous(breaks = seq(0, 55, 5)) + theme_light() + theme( panel.border = element_blank(), panel.grid.major.x = element_blank(), panel.grid.minor.y = element_blank(), panel.grid.major.y = element_line(size = .1, color = "grey"), axis.title = element_blank(), legend.position = "bottom", legend.title = element_blank(), plot.title = element_text(size = 10) ) 

Созданный в 2018-11-19 пакетом reprex (v0.2.1.9000)


Есть идеи?

10000