R中的Highcharts:在折线图中对xAxis进行排序

问题描述

我有一个简单的折线图,但有些类别没有所有句点(xAxis),所以xAxis没有排在最后。

这是一个示例数据: 图表看起来像这样(交换了“2019-01”和“2019-03”)

enter image description here

示例代码

df <- data.frame(PERIodo = c("2017-01","2017-03","2018-01","2018-03","2019-01",rep("2019-03",2),"2020-01"),CATEGORIA = c(rep("A",4),rep("B","A","B","B"),FRECUENCIA = c(2,3,1,2,4,2))

    highchart() %>%
      hc_xAxis(type = "category") %>%
      hc_add_series(df,"line",hcaes(x = PERIodo,y = FRECUENCIA,group = CATEGORIA),dataLabels = list(enabled = TRUE,style = list(fontSize = '13px'))
      ) %>% 
      hc_legend(enabled = TRUE,align = "right",layout = 'vertical',verticalAlign= "middle") %>% 
      hc_tooltip(shared = TRUE,crosshairs = TRUE,style = list(fontSize = "18px")

有人知道如何通过PERIodo保持xAxis顺序:2017-01,2017-03,2018-01,2018-03,2019-01,2019-03,2020-01

解决方法

也许您可以将日期 PERIODO 设为 Date 格式(如果您只有月份,请使用每月的第一天)。

df$PERIODO <- as.Date(paste0(df$PERIODO,"-01"))

然后,使用 type = "datetime" 而不是 category 作为您的 hc_xAxis 参数。您可以使用 dateTimeLabelFormats 在 x 轴上指示您想要的标签。

highchart() %>%
  hc_xAxis(type = "datetime",dateTimeLabelFormats = list(month = '%b %Y')) %>%
  ...

可以在 here 中找到默认标签和更多信息。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...