Упорядочение 1 оси с помощью ggplot с помощью fct_reorder() и ..prop

#r #ggplot2 #bar-chart

#r #ggplot2 #гистограмма

Вопрос:

У меня есть приведенная ниже гистограмма, на которой я строю различные категории покупок и проценты. Я хотел бы упорядочить их в порядке убывания, не могли бы вы посоветовать?

 S2<- ggplot(data = data)   
  geom_bar(mapping = aes(x = category), ..prop.., group = 1), stat = "count")   
  scale_y_continuous(labels = scales::percent_format())   
  coord_flip()  ylab("Total transactions %")   labs(title="Total Transactions by Category") 
  theme_classic()
S2
 

введите описание изображения здесь

Однако, если я попытаюсь использовать fct_reorder() в приведенном ниже коде, он сломается:

 data %>%
  count(category) %>%
  mutate(category = fct_reorder(category, n, .desc = TRUE)) %>%
  ggplot(aes(x = category, y = n))   geom_bar(stat = 'identity')  
  geom_bar(mapping = aes(x = category), ..prop.., group = 1), stat = "count") 
  coord_flip()  ylab("Total transactions %")   labs(title="Total Transactions by Category") 
  theme_classic()
 

Комментарии:

1. Привет, SidStack. Этот вопрос задавался много раз ранее при переполнении стека. Поэтому я закрыл это как дубликат. Если вы перейдете к связанному дублирующему вопросу, есть несколько отличных ответов, и вы должны получить то, что ищете там. Если по какой-то причине вы не можете заставить ни один из них работать, пожалуйста, отредактируйте свой вопрос, чтобы включить воспроизводимые данные и показать, в какой момент вы застряли. Удачи!

2. Я просмотрел эти потоки и все еще не могу исправить код.

3. если вы можете отредактировать свой пост, чтобы включить свои данные, я могу снова открыть его, чтобы мы могли посмотреть. Без ваших данных невозможно определить, может ли быть что-то не так со структурой вашего фрейма данных, или протестировать возможные решения. Сказав это, вы могли бы попробовать просто удалить строку geom_bar(mapping = aes(x = category), ..prop.., group = 1), stat = "count") , которая не нужна, поскольку у вас уже есть geom_bar вызов в строке выше, и он синтаксически некорректен (после x = category этого не должно быть дополнительной скобки.)

4. Я хочу использовать% и не считать, вот почему я использовал эту строку. Есть ли у вас какие-либо другие рекомендации, где я могу получить%, а затем все равно изменить порядок?

5. добавьте строку scale_y_continuous(labels = scales::percent)