如何使用 "x unified" 模式更改 R plotly hover 标签的顺序

how to change order of R plotly hover labels with "x unified" mode

我正在寻找在最新版本的 plotly R 包 (4.9.3) 中使用 hovermode = "x unified" 时是否有办法更改悬停标签的顺序。或者,是否可以恢复到旧版本的 plotly 显示 hoverlabels 的方式,同时仍然使用当前版本的 plotly 包?从数据可视化的角度来看,我认为旧方法更清晰。

我在下面包含了一个最低限度的可重现示例。当我 运行 使用 plotly v4.9.2.1 时,我得到如图 A 所示的结果,当我 运行 使用 plotly v4.9.3 时,我得到如图 B 所示的结果。图 A 和图 B 的比重是:

图A:

图 B:

代码:

library(plotly)
library(tidyr)

df <- data.frame(Date = seq(as.Date("2018-01-01"),
                         as.Date("2021-01-01"),
                         by = "months"),
                 stringsAsFactors = F)
df$y1 <- seq(0, 100, length.out = nrow(df))
df$y2 <- seq(0, 600, length.out = nrow(df))
df$y3 <- seq(0, 300, length.out = nrow(df))
df$y4 <- seq(0, 200, length.out = nrow(df))
df <- df %>%
  pivot_longer(cols = -Date,
               names_to = "yname",
               values_to = ) %>%
  arrange(yname, Date)
  

mycols <- c("#006633", "#70AD47", "#1F4E78", "#2F75B5", "#C65911", "#EF8C4F", 
            "#C00000", "#FF8B8B", "#7030A0", "#9966FF")
mycols <- mycols[1:length(unique(df$yname))]

p <- plot_ly()

p <- p %>%
  add_trace(data = df,
            x = ~Date,
            y = ~value,
            text = ~yname,
            hovertemplate = paste('<b>%{text}</b>',
                                  '<br>%{x}',
                                  '<br>%{y}',
                                  '<extra></extra>'),
            color = ~yname, colors = mycols,
            name = ~yname, yaxis = "y",
            type = "scatter", mode = "lines",
            showlegend = T)

p <- p %>%
  layout(hovermode = "x unified",
         legend = list(x = 1.12, y = .5, xanchor = "left"),
         yaxis = list(fixedrange = T),
         xaxis = list(title = "",
                      fixedrange = T,
                      hoverformat = "%b %d, %Y"),
         showlegend = T)
p

两个答案:

  1. 统一悬停标签中轨迹的顺序始终相同,无论轨迹的相对 Y 值如何。顺序和图例一样,所以会按照颜色的顺序排列。
  2. 您可以使用 hovermode = "x" 而不是 hovermode = "x unified"
  3. 恢复到之前的行为