首页 文章

ggplot2颜色与美学有关

提问于
浏览
1

我正在尝试制作数据集中项目频率的图表,但我在绘制时遇到此错误 .

不知道如何自动选择data.frame类型的对象的比例 . 违约持续 . 错误:美学必须是长度1或与数据(39123)相同:x

这是我正在使用的数据模型:

product_id  order_id                  product_name
1   41899       330425    Oreo  Ice Cream Sandwiches
2  122580      1707573                     Mint Chip
3  146891       622568              Coffee Ice Cream
4  134292      1284843 Belgian Milk Chocolate Gelato
5  146530      2693694   Variety Pack Ice Cream Bars

数据帧的str输出是(前5个值):

'data.frame':   5 obs. of  3 variables:
 $ product_id  : int  41899 122580 146891 134292 146530
 $ order_id    : int  330425 1707573 622568 1284843 2693694
 $ product_name: Factor w/ 49688 levels "'Swingtop' Premium Lager",..: 28573 25871 10030 4236 47274

我已尝试对绘图代码进行了多处更改,但我得到了不同的错误 .

这是我正在使用的代码 .

orders_group <- group_by(orders_products,order_id)
orders_summ <- as.data.frame(summarise(orders_group, n_items = count(product_name)))

ggplot(orders_summ,aes(x=n_items))+
  geom_histogram(stat="count")+#geom_histogram(fill="indianred", bins = 100000) + 
  geom_rug()+
  coord_cartesian(xlim=c(0,80))+
  scale_fill_manual(values = getPalette(colourCount))

1 回答

  • 1

    我相信这源于您错误地使用 count() 这一事实 . count() 产生一个tibble,当你调用 summarise 时,会在数据帧内产生奇怪的反应 .

    我必须运行,但乍一看,您似乎创建了一列数据帧(或类似的东西),这将解释您的ggplot错误 . 我相信你要找的是这个:

    orders_summ <- orders_products %>%
          group_by(order_id) %>% # normally this step would have produced your orders_group
          summarise(n_items = n())
    

    然后尝试运行你的ggplot代码 .

相关问题