Процент не в порядке

#r #ggplot2

Вопрос:

Ниже приведен мой код для создания горизонтальной гистограммы. Проценты не в порядке. Я хотел бы получить процент от 0 до 100%.

 df %>%
  dplyr::group_by(Site_name) %>%
  dplyr::summarise(n = sum(Race %in% "Missing"), perc = paste0(round(n/n()*100),"%")) %>%
ggplot(aes(Site_name, perc))   geom_col(position = 'dodge', fill = "#0000FF", stat="identity")   
         coord_flip()   geom_text(aes(label=perc), vjust=0, color="black",
            position = position_dodge(0.9), size=3.5) 
 

Созданный график приведен ниже. Но я хочу, чтобы процентная ось увеличивалась в порядке возрастания от 0 до 100.

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

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

1. дополните текст с vjust и hjust в geom_text .

2. perc это строка фактора в вашем наборе данных, а не число. Я бы предложил указать значение в виде числа/целого числа, а затем построить его.

3. @maarvd Хорошо понял. Но как мне это сделать в рамках этого кода?

4. perc = paste0(round(n/n()*100),"%")) чтобы perc = round(n/n()*100) ?

Ответ №1:

Я думаю, вы ищете dplyr::arrange . Документация здесь

 df %>%
  dplyr::group_by(Site_name) %>%
  dplyr::summarise(n = sum(Race %in% "Missing"), perc = round(n/n()*100)) %>%
  dplyr::arrange(perc) %>%
ggplot(aes(Site_name, perc))   
  geom_col(position = 'dodge', fill = "#0000FF", stat="identity")   
  coord_flip()   
  geom_text(
    aes(label=perc), 
    vjust=0, 
    color="black",
    position = position_dodge(0.9), 
    size=3.5
  ) 
 

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

1. Да, это то, что я искал. Вместо этого я использовал «as.numeric(sub(«%», «», df1$perc)»