Я использую ggplot2 geom_bar для создания серии гистограмм. У каждого города есть три точки данных, и я рисую график для каждого города. Я хочу пометить второй и третий столбцы на каждой диаграмме как процент от предыдущего столбца (например, данные, которые выглядят как 5, 4, 3, будут читать 5, 80%, 75%).
В этих данных значение I am должно быть меткой для столбца 1 на всех графиках. dum2 / dum1 * 100 должно быть меткой для бара со значением dum2. dum3 / dum2 * 100 должно быть меткой для бара со значением dum3.
Пример
State <- c("AA","AB","AC","AD","AE")
dum1 <- c(34, 30, 8, 22, 5)
dum2 <- c(22.5, 28.1, 3, 12, 1)
dum3 <- c(12.8, 23, 2.8, 11.9, 0.3)
df <- data.frame(State, dum1, dum2, dum3)
m1 <-melt(df)
for(i in levels(m1$State))
p <- ggplot(subset(m1, State==i), aes(variable, value, fill = variable)) +
facet_wrap(~ State) +
geom_bar(stat="identity", show_guide=FALSE) +
geom_text(aes(x=variable, y=value + 2, label=round(value,digits=0)), vjust=0,
size=30) +
theme(axis.title.x = element_blank(),
plot.background = element_rect(fill = "transparent", color=NA),
panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.border = element_blank(), panel.background = element_blank(),
axis.line = element_blank(), axis.title.y=element_blank(),
axis.line = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks = element_blank(),
axis.title.y = element_blank(),
strip.text.x = element_blank(),
strip.background = element_rect(fill="transparent")
) +
scale_y_continuous(limits=c(0,40)) +
scale_fill_manual(values=c("navy", "coral", "gold")) +
ggsave(sprintf("plot %s.jpg", i))
Я попытался добавить столбец с рассчитанным процентом для соответствующих строк, но не знаю, как вызвать столбец только для выбранных точек данных на графике. Я использовал что-то вроде
lab<-c(0,0,0,0,0,66.2,93.7,37.5,54.5,20.0,56.9,81.9,93.3,99.2,30.0)
но не могу понять, как правильно назвать это для правильных столбцов.