Почему моя гистограмма R (geom_bar) неправильно заполняет цвет на основе предоставленной переменной? - PullRequest
0 голосов
/ 20 июня 2019

Это вопрос новичка.Я использую пакет "nycflights13" в R и "tidyverse".

library(nycflights13)  
library(tidyverse)

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

Я могу получить простую гистограмму со следующим текстом:

ggplot(flights) +  
    geom_bar(mapping=aes(x=carrier))

Когда я пытаюсь раскрасить его месяцем,ничего не меняет.

ggplot(flights) +  
    geom_bar(mapping=aes(x=carrier, fill=month))

График, сгенерированный приведенным выше кодом, выглядит точно так же.

Кажется, это работает, когда я делаю противоположное ... если я создаю диаграммус "месяцем" на оси х и цветом по носителю, он работает так, как я и ожидал.

ggplot(flights) +  
    geom_bar(mapping=aes(x=month,fill=carrier))

Я предполагаю, что это как-то связано с дискретными и непрерывными переменными?

1 Ответ

1 голос
/ 20 июня 2019

Да, это связано с дискретными и непрерывными переменными.as.factor() преобразует месяц в дискретные факторы.

ggplot(flights) + 
    geom_bar(mapping=aes(x=carrier, fill=as.factor(month))) 

Для развлечения есть способ переопределить встроенную geom_bar по умолчанию stat_count.Для этого необходимо добавить фиктивную переменную для полетов, чтобы использовать ее как y, и отсортировать данные по месяцам (или вы получите странные артефакты).Посмотрите справочный документ о ?geom_bar().

flights$n<-1

flights%>%
  arrange(month)%>%
  ggplot(aes(carrier, n, fill = month)) +
  geom_bar(stat = "identity") +
  scale_fill_continuous(low="blue", high="red") 
...