在ggplot中更改x轴标签的顺序

时间:2018-10-30 07:32:26

标签: r dataframe ggplot2 rstudio line-plot

我的约会日期为Caused by: java.lang.NullPointerException: null at es.xx.hos.xx.rest.validators.CifValidator.isValid(CifValidator.java:16) ~[classes/:na] at es.xx.hos.xx.rest.validators.CifValidator.isValid(CifValidator.java:7) ~[classes/:na] 当我绘制时,我需要将其保留在x轴上。但是x轴正在重新排序。 我尝试了因子方法,然后也得到了相同的结果:

'Dec-17','Jan-18','Feb-18','Mar-18','Apr-18','May-18','Jun-18','Jul-18','Aug-18'

但是,我需要遵循从> data_$Dates [1] Apr-18 Aug-18 Dec-17 Feb-18 Jan-18 Jul-18 Jun-18 Mar-18 May-18 9 Levels: Apr-18 Aug-18 Dec-17 Feb-18 Jan-18 Jul-18 Jun-18 ... May-18 而不是Dec-17开始的相同格式 我的代码:

Apr-18

2 个答案:

答案 0 :(得分:1)

您正在按字母顺序重新排序。您可能想要将数据转换为这样解释的数据类型(如@Wimpel在其评论中建议的那样)。另外,由于只有9个唯一值,您可能需要手动重新排序:

date_$Dates <- factor(date_$Dates, levels = c("Dec-17", "Jan-18", "Feb-18"))

(您必须进行扩展以包括我省略的六个月)。

答案 1 :(得分:1)

让我们首先生成一些样本数据:

set.seed(123)
data_ <- data.frame(Expected = sample(1:10, 9), Dates = c('Dec-17','Jan-18',
    'Feb-18','Mar-18', 'Apr-18', 'May-18','Jun-18', 'Jul-18', 'Aug-18'),
    stringsAsFactors = FALSE)

正如@Wimpel所说,最自然的方法是将数据列转换为数据类型列。 Here,您可能会找到有关此方法的全面讨论。最便捷的解决方案之一是使用lubridate软件包:

library(lubridate)
data_$Dates_data <-  as.Date(parse_date_time(data_$Dates, "m-y"))

现在您有一个日期格式的列用作x数据,并且可以根据自己的喜好调整x标签的格式(同样,如@Wimpel所示):

pl_1 <- ggplot(data = data_, aes(x = Dates_data, y = Expected, 
    group = 1)) +
  geom_line() +
  geom_point() +
  scale_x_date(date_labels = "%b-%y", date_breaks = "1 month")
plot(pl_1)