R Plotly:当轴类型为类别时,无法重新排列x轴

Rus*_*ser 4 plot r ggplot2 plotly

我有以下数据:

myData <- data.frame(FISCAL_YEAR_WEEK = c('2016-09','2016-09','2016-09','2016-09','2016-09','2016-10','2016-10','2016-10','2016-10','2016-10','2016-10','2016-10','2016-10','2016-11','2016-11','2016-11','2016-11','2016-12','2016-12','2016-12','2016-12','2016-12','2016-12','2016-14','2016-14','2016-14','2016-14'), 
                     MOTOR_VEND_ID = c('7','E','F','F','M','7','9','E','E','F','F','M','R','7','E','F','F','E','E','F','F','M','M','7','E','F','M'),HGA_SUPPLIER=c('RHO','RHO','HWY','RHO','RHO','RHO','RHO','HWY','RHO','HWY','RHO','RHO','RHO','RHO','RHO','HWY','RHO','HWY','RHO','HWY','RHO','HWY','RHO','RHO','RHO','RHO','RHO'), 
                     RTPAD_TOT = c(0,0,0,0,0,0,420,6,0,0,0,20,1,76,0,0,0,76,62,0,0,0,0,6,1,1,0))
Run Code Online (Sandbox Code Playgroud)

我希望有一个RTPAD_TOT反对的折线图FISCAL_YEAR_WEEK,由其他可变的分组.FISCAL_YEAR_WEEK表示会计年度的会计周.2016-11意味着2016财年的第11周.这是我的情节代码:

ax <- list(
type = "category",
showgrid = TRUE,
showline = TRUE,
autorange = TRUE,
showticklabels = TRUE,
ticks = "outside",
tickangle = 0
)

ay <- list(
range = c(0,300),
dtick = 50,
showgrid = TRUE,
showline = TRUE,
autorange = FALSE,
showticklabels = TRUE,
ticks = "outside",
tickangle = 0
)

plot_ly(myData,
x = FISCAL_YEAR_WEEK,
y = RTPAD_TOT,
type = 'scatter',
mode = 'markers+lines',
color = interaction(MOTOR_VEND_ID,HGA_SUPPLIER)) %>%
layout(xaxis = ax, yaxis = ay)
Run Code Online (Sandbox Code Playgroud)

但是,这导致我的x轴没有按顺序排列: 在我的x轴上乱糟糟的

显然,我希望2016-09在2016-10之前出现在图表中.但是我FISCAL_YEAR_WEEK在x轴上的混乱都是混乱的.

使用ggplot2构建相同的图不会混淆我的x轴:

ggplot(data = myData, 
       aes(x = FISCAL_YEAR_WEEK, 
           y = RTPAD_TOT, 
           group = interaction(MOTOR_VEND_ID, HGA_SUPPLIER)))) +
  geom_line()
Run Code Online (Sandbox Code Playgroud)

从上面的代码我的轴的外观将是好的,直到......

ggplotly()
Run Code Online (Sandbox Code Playgroud)

我想将我的ggplot转换成情节.在ggplotly()命令之后,我的x轴将再次混乱.

我需要type = "category"x轴上的选项,因为我只想查看数据中存在的日期.此外,故意将2016 - 09年错误解释为2016年9月而不是2016年的第9个财周.我正在构建一个闪亮的应用程序,用户可以将我的x轴更改为不仅是日期时间变量,而是其他变量同样.有时,它可能是序列号,如001,002,120.所以将它设为数字/日期时没有意义,因为这将在002和120之间产生巨大的差距.所以type = "category"这里需要选项.

我也尝试过分解,FISCAL_YEAR_WEEK但它不起作用:

myData$FISCAL_YEAR_WEEK <- factor(myData$FISCAL_YEAR_WEEK,levels=sort(unique(myData$FISCAL_YEAR_WEEK)))
Run Code Online (Sandbox Code Playgroud)

我的x轴仍然会在情节上混乱

Edw*_*rek 10

直到最近,对plot.ly分类轴进行排序的唯一方法是对图表的第一个分类轨迹的数据进行排序(参考:Etienne在plot.ly社区网站上的答案).

这已经改变了,你可以通过categoryorder以下任何一种方式设置你想要的分类轴排序:

ax <- list(
  type = "category",
  categoryorder = "category ascending",
  showgrid = TRUE,
  showline = TRUE,
  autorange = TRUE,
  showticklabels = TRUE,
  ticks = "outside",
  tickangle = 0
)
Run Code Online (Sandbox Code Playgroud)

要么:

ax <- list(
  type = "category",
  categoryorder = "array",
  categoryarray = sort(unique(myData$FISCAL_YEAR_WEEK)),
  showgrid = TRUE,
  showline = TRUE,
  autorange = TRUE,
  showticklabels = TRUE,
  ticks = "outside",
  tickangle = 0
)
Run Code Online (Sandbox Code Playgroud)

有关plot.ly的分类轴排序的更多信息,请参阅其参考文档.