Установить ручной порядок круговой диаграммы с помощью ggplot2 - PullRequest
1 голос
/ 18 марта 2020

Я провел опрос среди студентов, и теперь у меня есть набор данных, содержащий 68 записей с более чем 20 переменными. Теперь я смотрю на один вопрос (одну переменную): «Вы хотите загрузить резюме на платформу?»

Чтобы легко проанализировать этот вопрос, я сгруппировал ответы (используя функцию group_by tidyverse), используя следующий код:

upload = data %>%
filter(!is.na(`Upload summaries?`)) %>%
  group_by(`Upload summaries?`) %>%
    summarise(
      number=n()
    ) %>%
    arrange(-number)

Это приводит к следующему набору данных:

  `Upload summaries? number
<fct>                <int>
1 Yes                     50
2 No                      18

Затем я сделал круговую диаграмму, используя следующий код (ggplot2):

upload_pie = upload %>%
    ggplot(aes(x="", y=number, fill=`Upload summaries?`)) +
    geom_bar(width=1, stat="identity") +
    geom_text(aes(label=paste(round(number / sum(number) * 100, 0), "%")), position = position_stack(vjust = 0.5)) +
    coord_polar("y", start=0) +
    labs(fill="Answers", x="", y="", title = "Would you upload summaries to SynopShare?") 
  plot(upload_pie)

Что приводит к следующему: enter image description here

Однако в легенде я хочу, чтобы «Да» было первым, а «Нет» - вторым. Как я могу это изменить?

Я уже пытался использовать scale_x_discrete () (добавляя его в график):

scale_x_discrete(c("Yes", "No")) +

Но это не привело к каким-либо изменениям.

Более того, я попытался добавить следующий код:

levels(upload$`Upload summaries?`) = c("Yes", "No")

Но это привело к искажению сюжета:

enter image description here

1 Ответ

1 голос
/ 18 марта 2020

Вам необходимо использовать scale_fill_discrete с перерывами, у вас нет данных, но смотрите следующий пример:

df = data.frame(x=c("a","b"),y=c(3,7))
p1 = ggplot(df,aes(x=1,y=y,fill=x)) + 
geom_bar(stat="identity") + coord_polar("y")
p2 = p1 +
scale_fill_discrete(breaks=c("b","a"))
library(patchwork)
p1 + p2

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...