为什么我的 R 条形图 (geom_bar) 没有根据提供的变量适当地填充颜色?

Why is my R bar chart (geom_bar) not appropriately filling color based on the provided variable?

这是一个新手问题。我在 R 中使用 "nycflights13" 包,"tidyverse".

library(nycflights13)  
library(tidyverse)

我正在尝试获取一个显示 airline/carrier 航班总数的条形图,并根据每个月发生的航班数量为每个条形图着色。

我可以得到一个简单的条形图来显示以下内容:

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

当我尝试用月份给它上色时,它没有任何改变。

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

上面代码生成的图表看起来完全一样。

当我做相反的事情时它似乎起作用了...如果我创建一个在 x 轴上使用 "month" 并按运营商颜色的图表,它就像我期望的那样工作。

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

我假设它与离散变量和连续变量有关?

是的,这与离散变量和连续变量有关。 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")