r - 在R中设置动态hoverlabel背景颜色plotly scattergl

标签 r plotly r-plotly

当使用 scattergl 而不是 scatter 时,Rplotly 中的动态悬停标签背景颜色似乎不起作用,如下例所示。

按照 type = "scatter" 的预期工作:

library(plotly)

X <- data.frame(x = 1:6,
                y = 1:6,
                z  = 1:6)

plot_ly(data = X, x = ~x, y = ~y,
        type = "scatter", mode = "markers",
        marker = list(color = ~x, 
                      colorscale = list(c(0, .5, 1), c('#0d71db', "#dbc00d", "#db220d"))))

enter image description here

对于 type = "scattergl" 的所有数据点,悬停标签背景颜色变为黑色:

plot_ly(data = X, x = ~x, y = ~y,
        type = "scattergl", mode = "markers",
        marker = list(color = ~x, 
                      colorscale = list(c(0, .5, 1), c('#0d71db', "#dbc00d", "#db220d"))))

enter image description here

我猜想解决方案可能是将 colorscale 中使用的相同颜色数组传递给 bgcolor通过 hoverlabel = list(bgcolor = ???) 进行参数。但我不知道该怎么做。


编辑
根据@Quinten 的回答尝试过,但没有成功。可以看出,颜色是默认的plot_ly颜色,与cols中指定的颜色不对应。

library(plotly)

n <- 5000
X <- data.frame(x = sample(1:100, n, replace = TRUE),
                y = sample(1:100, n, replace = TRUE),
                z = sample(1:500, n, replace = TRUE))

length_unique_vals <- length(unique(X$z))
cols <- colorRampPalette(c('#0d71db', "#dbc00d", "#db220d"))(length_unique_vals)
cols <- cols[factor(X$z)]

plot_ly(data = X, x = ~x, y = ~y,
        type = "scattergl", mode = "markers",
        marker = list(color = ~z,
                      colorscale = cols,
                      colorbar = list(title = "Colorbar")),
        hoverlabel = list(bgcolor = cols)) %>% 
  toWebGL()

最佳答案

您可以使用 RColorBrewer 创建 6 种不同颜色的矢量。您将这些颜色分配给 markercolorhoverlabelbgcolor,这将显示右侧颜色。您可以使用以下代码:

library(plotly)

X <- data.frame(x = 1:6,
                y = 1:6,
                z  = 1:6)

library(RColorBrewer)
cols <- brewer.pal(n = 6, name = "Set3")

plot_ly(data = X, x = ~x, y = ~y,
        type = "scattergl", mode = "markers",
        marker = list(color = cols), 
        hoverlabel = list(bgcolor = cols))

输出:

enter image description here

从图中可以看出,标签与标记的颜色相同。

关于r - 在R中设置动态hoverlabel背景颜色plotly scattergl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71715692/

相关文章:

r - 有没有其他方法可以实现 plotly R 的累积动画?

r - 在绘图中添加水平滚动条

r - 如何按行替换矩阵的非对角元素?

r - 将熔化操作从 tidyverse 转换为 data.table

r - 如何调整标题空间并在 r 中绘图

python - 颜色条最小值和最大值

json - 使用 jsonlite 将 R 中的未命名列表写入 json 数组

r - glmnet的公式接口(interface)

r - 带 Plotly 的树形图 : Blank Screen?

r - 使用 plotly 创建色带