ggplot2: пометьте n наблюдений для альфы на столбцах с накоплением
У меня есть df, как следует:
fruit <- data.frame(Sample=1:100,
Fruit=c(rep("Apple", 10), rep("Strawberry", 25), rep("Grape", 20),
rep("Watermelon", 15), rep("Lime", 11), rep("Blueberry", 10),
rep("Plum", 9)),
Color=c(rep("Red", 30), rep("Green", 45),
rep("Blue", 25)),
Ripe=c(rep(c(T, F), 50)))+
fruit$Fruit <- factor(fruit$Fruit, unique(fruit$Fruit))+
fruit$Color <- factor(fruit$Color, unique(fruit$Color))
Затем я построил гистограмму:
foo <- aggregate(Sample ~ Color, data = fruit, FUN = length)
library(ggplot2)
ggplot(fruit, aes(Color, fill = Color, alpha = Ripe)) +
geom_bar(color = "black") +
geom_text(data = foo, aes(label = Sample, y = Sample), alpha = "1", vjust = -1)
scale_alpha_discrete(range = c(1, 0.6)) +
theme(axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.ticks.x = element_blank()) +
guides(fill = guide_legend(override.aes = list(colour = NA)))
С помощью команды выше я смог создать следующую гистограмму:
Итак... я смог поместить общее количество наблюдений для каждого цвета над каждой полосой... но я не знаю этого... скорее, мне интересно, как я могу поставить общее n наблюдений для TRUE вместо этого в каждой цветной полосе. В этом случае это будет одно n наблюдение для каждого столбца, с одним над вышеуказанным столбцом ИСТИНА для ИСТИННОГО наблюдения n для этого конкретного цвета...
1 ответ
Решение
Вы можете использовать расчетную мощность stat
в ggplot2
ggplot(fruit, aes(Color, fill = Color, alpha = Ripe)) +
geom_bar() +
geom_text(stat = "count", aes(y = ..count.., label = ..count..),
position = "stack", show.legend = FALSE) +
scale_alpha_discrete(range = c(1, 0.6)) +
theme(axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.ticks.x = element_blank()) +
guides(fill = guide_legend(override.aes = list(colour = NA)))