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())
Другие вопросы по тегам