我可以在ggplot中用每个月的开头标记月份并维护订单吗?

时间:2019-03-27 02:14:35

标签: r ggplot2

我希望从销售数据中提取日历月,并将结果绘制到条形图上。

使用dplyr和lubridate,我通过编码SalesMonth = as.factor(month(SaleDate)来创建一个新变量SalesMonth作为因子。该返回值1-12可以在barplot上绘制。

对于最后的绘图,我想显示值JFMAMJJASOND而不是1-12。这可能吗?我应该如何处理-在dplyr数据准备步骤中,还是直接在ggplot中标记值?

我已经查看了对因子声明的应用级别以及使用month.abb的方法,但是它不起作用。具体来说,我只想使用第一个字母,所以如果我尝试创建一个因子,将会有重复(3 Js,2 As,2 Ms)。

2 个答案:

答案 0 :(得分:1)

如果您的月份值为numeric,则可以在绘图阶段通过修改标签来实现。在您的ggplot中添加以下内容:

+ scale_x_continuous(breaks = 1:12, 
                     labels = c('J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'))

如果它们不是数字,则可以在绘制之前简单地使用as.numeric()对其进行转换...,或者直接从原始代码中删除因子转换。

答案 1 :(得分:0)

factor(SalesMonth, levels = c("Ja","F","Mar","A","M",
                              "Ju","Jl","A","S","O","N","D"))

如果您使用唯一的缩写,它将保留ggplot的顺序