按升序绘制 Plotly 值

Plot Plotly Values in Ascending Order

我有一个数据集 data,具有以下值:

   ID                TIME                         Duration   
    A                12/18/2019 4:45:10 AM        1 sec
    A                12/18/2019 9:06:59 PM        0 sec                    
    B                12/19/2019 4:14:13 AM        7 sec
    B                12/19/2019 4:14:20 AM        0 sec
    A                12/18/2019 4:45:11 AM        0 sec
 p <- plot_ly(data = df,
        x = ~ID,
        y = ~Duration,
        name = "Title",
        type = "bar",
        orientation = 'v',
        order = "ascending"

     )%>% 
layout(
       title = "Title",
       xaxis = list(title = "ID", tickangle = -45 ),
       yaxis = list(title = "Time In Seconds"))

我如何指定图形按升序排列,如下图所示。 categoryorder = 'ascending' 无效。

我们可以使用reorder来设置ID的水平,这是一个根据Duration值设置的因素。

library(plotly)
library(dplyr)

df1 %>% 
  group_by(ID) %>% 
  mutate(Dur.order = sum(as.numeric(Duration))) %>% 
  ungroup() %>% 
  mutate(ID.order = reorder(ID, Dur.order)) %>% 
plot_ly(data = .,
             x = ~ID.order,
             y = ~Duration,
             name = "Title",
             type = "bar",
             orientation = 'v',
             order = "ascending") %>% 
  layout(title = "Title",
         xaxis = list(title = "ID", tickangle = -45 ),
         yaxis = list(title = "Time In Seconds"))

数据:

df1 <- structure(list(ID = c("A", "A", "B", "B", "A"), 
                      Date = c("12/18/2019 4:45:10 AM", "12/18/2019 9:06:59 PM", 
                               "12/19/2019 4:14:13 AM", "12/19/2019 4:14:20 AM", 
                               "12/18/2019 4:45:11 AM"), 
                      Duration = structure(c(1, 0, 7,0 , 0), 
                 class = "difftime", units = "secs")), 
                 row.names = c(NA, -5L), class = "data.frame")