круговая диаграмма ggplot2, цифры не отображаются - PullRequest
0 голосов
/ 19 мая 2018

Я новичок в визуализации данных и в R с ggplot2.Я пытаюсь визуализировать некоторые данные в круговой диаграмме.Я использовал следующий код:

percentageData <- data.frame(Year = "1987", 
                             TypeOfDelays = c(percDepDelays[1], percArrDelays[1], percAntDepdelays[1], percAntArrDelays[1]),
                             Label = factor(c("Departure delays", "Arrival Delays", "Early Departure", "Early arrival")))

labels = c("Departure delays", "Arrival Delays", "Early Departure", "Early arrival")
ggplot(data = percentageData) +
  geom_bar(aes(x="", y=TypeOfDelays, fill=Label), stat = "identity", width = 1) + 
  coord_polar(theta = "y", start = 0) +
  theme_void() +
  geom_text(aes(x = 1, y=cumsum(TypeOfDelays) - TypeOfDelays/2, label=labels))

Набор данных, который я анализирую, таков: набор данных о полетах

Моя задача - визуализировать каждый годколичество задержек для каждого типа задержки (я рассматриваю 4 типа задержек: отправление, прибытие, отправление до времени и прибытие до времени).

Моя идея состоит в том, чтобы создать кадр данных для каждогогод, содержащий год, процент от числа задержек для каждого типа (общее число # задержек в году / количество рейсов в этом году) и метку, описывающую тип задержки.Я уже рассчитал процент для каждого типа задержек.Я хочу визуализировать эти данные на круговой диаграмме, я попытался создать круговую диаграмму с кодом, приведенным выше, и в результате получился следующий результат: enter image description here

Итак, моя проблема заключается в следующем:

1) Почему процентные данные не визуализируются?В чем проблема в моем коде?

2) Как правильно визуализировать метку в правильном положении?

Заранее спасибо.

1 Ответ

0 голосов
/ 19 мая 2018

Чтобы получить то, что вы хотите, вы можете адаптировать свой код по следующим пунктам:

  • Переместить aes в ggplot() деталь
  • Удалить x и y спецификация от aes в geom_text
  • Добавьте position = position_stack(vjust = 0.5) к geom_text

Окончательный код:

ggplot(data = percentageData, aes(x="", y = TypeOfDelays, fill = Label)) +
  geom_bar(stat = "identity", width = 1) + 
  geom_text(aes(label = labels), position = position_stack(vjust = 0.5)) +
  coord_polar(theta = "y", start = 0) +
  theme_void()

, что дает:

enter image description here

Числа не появились, потому что вы не просили ggplot2 включить их.Возможность:

ggplot(data = percentageData, aes(x="", y = TypeOfDelays, fill = Label)) +
  geom_bar(stat = "identity", width = 1) + 
  geom_text(aes(label = paste0(labels, ': ', TypeOfDelays,' %')), position = position_stack(vjust = 0.5)) +
  coord_polar(theta = "y", start = 0) +
  theme_void()

, что дает:

enter image description here


Используемые данные:

percentageData <- data.frame(Year = "1987", 
                             TypeOfDelays = c(30, 45, 5, 20),
                             Label = factor(c("Departure delays", "Arrival Delays", "Early Departure", "Early arrival")))
labels <- c("Departure delays", "Arrival Delays", "Early Departure", "Early arrival")
...