【问题标题】:ggplot w/ x-axis Month-Year (no day) and "filter" start dateggplot w/x轴月-年(无天)和“过滤器”开始日期
【发布时间】:2021-02-23 17:05:50
【问题描述】:

所以假设我有数据集:

date         order_sum
2015-01-01   800
2016-08-19   900
2019-04-16   1200
2020-10-28   850

这是我的月转换:sales$month <- month(sales$date)

这是我在 x 轴上使用的最小值:min <- ymd("2020-11-01")

这是指定我的 df 的基本图:baseplot <- ggplot(sales, aes(month, order_sum))

我正在尝试制作该月的日期与 order_sum 总和的基本图表,并将 x 轴上的日期显示为 11-2020

scale_x_date(limits = c(min, now), breaks = "1 month", labels = date_format("%m-%Y")) +
scale_y_continuous(labels = function(x) scales::dollar(x, suffix = 'M'), n.breaks = 3, expand = expansion(mult = c(0, 0.05))) +
labs(x = "Date", y = "Order Volume")

我在文本块上得到的错误是这样的:

as.Date.default(e) 中的错误:不知道如何将 'e' 转换为类“Date”

有人知道为什么吗?提前致谢!

【问题讨论】:

    标签: r ggplot2 lubridate as.date


    【解决方案1】:

    我想我发现了错误:

    library(scales)
    library(lubridate)
    sales <- data.frame(date = c("2015-01-01","2016-08-19",
                                   "2019-04-16","2020-10-28"),
                          order_sum = c(800,900,1200,850))
    
    sales$month <- month(as.Date(sales$date))
    sales$date <- as.Date(sales$date)
    
    min <- ymd("2020-11-01")
    ggplot(sales, aes(date, order_sum)) + 
      scale_x_date(limits = c(min, as.Date(now())), 
                 breaks = "1 month", 
                 labels = date_format("%m-%Y")) + 
      scale_y_continuous(labels = function(x) scales::dollar(x, suffix = 'M'), 
                         n.breaks = 3, 
                         expand = expansion(mult = c(0, 0.05))) + 
      labs(x = "Date", y = "Order Volume") +
      geom_point()
    

    首先,如果你用 month() 转换 sales$month,你会得到整数。如果你使用日期变量会更好。

    然后我尝试绘图,但没有可用的图形。为什么?因为您定义的最小日期是“2020-11-01”。您的限制是从 2020-11-01 到现在 2021-02-23。您的样本中没有数据点包含在该区间内。

    【讨论】:

    • 谢谢!!!解决了这个错误。至于样本数据——我实际上在指定的最小值之后确实有数据,我只是没有意识到我没有为这里的问题提供正确的样本数据。你知道我如何解决我现在遇到的错误吗? Error: stat_count() can only have an x or y aesthetic.感谢帮助初学者!
    • 您好@danisabbia,stat_count 可能是您想要的图形类型的错误。我认为您可以创建一个新问题(在我的回答中包含更多数据点)并向我们展示您正在使用的 geom,以便我(或 SO 中的其他人)可以帮助您。并且不要担心成为初学者......我仍然是初学者。
    猜你喜欢
    • 1970-01-01
    • 2019-07-27
    • 2021-12-04
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 2021-10-31
    • 2014-11-05
    相关资源
    最近更新 更多