ggplot2颜色与美学的比例问题

时间:2018-04-08 21:58:04

标签: r ggplot2

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

  

不知道如何自动选择类型对象的比例   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 个答案:

答案 0 :(得分: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代码。