ggplot2 размещает метки данных (geom_text) в неправильном порядке
У меня проблема с неправильным заказом меток данных с использованием ggplot2.
К сожалению, другие вопросы и ответы SE по этой теме не очень проницательны ( пример), поэтому мне придется обратиться с репер. У меня есть следующие данные:
df = as.data.frame(structure(list(geotype = c('urban','urban','urban','urban','suburban','suburban','suburban','suburban'),
limitations = c('all','some','all','some','all','some','all','some'),
metric = c('lte','lte','5g','5g','lte','lte','5g','5g'),
capacity=c(12,11,5,4,14,10,5,3))))
Если я тогда попытаюсь построить эти данные, используя этот код:
ggplot(df, aes(x = geotype, y = capacity, fill=metric)) + geom_bar(stat="identity") +
facet_grid(~limitations) +
geom_text(data = df, aes(geotype, capacity + 2, label=capacity), size = 3)
Я получил этот неправильный порядок маркировки:
Я играл с порядком переменных для возрастов (например, Rev(емкость)), но я не могу решить проблему. Может ли кто-нибудь дать более полный ответ всему сообществу SE о том, как поступить с заказом этикетки?
3 ответа
Вам нужно позвонить position
аргумент в geom_text
чтобы сопоставить заполненные данные эстетики с geom_bar
и сообщить функции, что данные сложены.
ggplot(df, aes(x = geotype, y = capacity, fill=metric)) +
geom_bar(stat="identity") +
geom_text(data = df, aes(geotype, capacity, label=capacity), size = 3, vjust = 2,
position = position_stack()) +
facet_grid(~limitations)
Вы можете установить метки в почтовом ggplot aes
ggplot(df, aes(x = geotype, y = capacity, fill = metric, label = capacity ) ) +
geom_col() +
geom_text( size = 3, position = position_stack( vjust = 0.5 ) ) +
facet_grid( ~limitations )
Что-то вроде этого? The position stack.
g <- ggplot(df, aes(x = geotype, y = capacity, fill = metric, label =
capacity))
g + geom_col() + facet_grid(~limitations) +
geom_text(size = 3, vjust =3, position = position_stack())