Проблема, с которой я сталкиваюсь, очень проста.ggplot2, geom_text и заказ
Я строю 3 типа данных в гистограмме с процентами по оси Y и раскрашивая каждую группу, используя другой столбец из моего блока данных.
График выглядит следующим образом:
генерируется с
ggplot(cleaned_data, aes(x = Engine, fill = Errorcat)) +
geom_bar(aes(y = (..count..)/sum(..count..))) +
scale_y_continuous(labels = percent) +
scale_fill_discrete("Events", breaks = c("Ok", "Waiting", "Error")) +
labs(y = "")
Эти данные были учтены следующим образом: cleaned_data $ Errorcat < - фактор (cleaned_data $ Errorcat, уровни = c («Ошибка», «ОК», «Ожидание»))
Я просто хочу показать соответствие в процентах в середине каждого бункера. Так что я вернулся и просто добавил geom_text вызов, как это:
ggplot(cleaned_data, aes(x = Engine, fill = Errorcat)) +
geom_bar(aes(y = (..count..)/sum(..count..))) +
geom_text(aes(y = ((..count..)/sum(..count..)) - 0.5* (((..count..)/sum(..count..))) ,
label = scales::percent((..count..)/sum(..count..))), stat = "count", vjust = -0.25, check_overlap = TRUE) +
scale_y_continuous(labels = percent) +
scale_fill_discrete("Events", breaks = c("Ok", "Waiting", "Error")) +
labs(y = "")
Он производит это:
Цифры правы, только их respectives Y координаты не в правильном заказ. Как вы можете видеть, 45%, например, это «верхняя» фигура, в то время как она должна соответствовать синему, а не зеленому. снизу вверх, я думаю, что geom_text отображает красный/синий/зеленый, в то время как я хочу точно так же, как полосы красного/зеленого/синего.
Я не могу понять, как я могу это сделать, и почему он не делает это сразу. Конечная цель состоит в том, чтобы иметь определенный цвет, присвоенный Errorcat. Я хочу, чтобы Ok был зеленым, ожидая, что он будет синим, и Ошибка будет красной. И легенда, которую я хочу, Ок сверху, а затем - Ошибка.
Если кто-то был бы любезен, чтобы объяснить, что мне не хватает ... Спасибо!
Является основным фактором ваших факторов в «Событиях», отличающихся от порядка, в котором вы указали 'breaks' –
Это действительно другое. 'cleaned_data $ Errorcat <- factor (cleaned_data $ Errorcat, levels = c (" Error "," Ok "," Waiting "))' Я хочу, чтобы Ok был зеленым, ожидая синий и красный, и легенда упорядочиваться так, как есть, то есть сначала сначала, а затем ждать, затем ошибка. – homer3018
В ggplot2 2.2.0 вам понадобится нечто вроде 'geom_text (aes (y = (..count ..)/sum (.. count ..), label = scale: percent ((.. count.)) /sum(..count ..))), stat = "count", check_overlap = TRUE, position = position_stack (vjust = .5)) ' – aosmith