在点云的背景中在图块上悬停 - 如何显示工具提示?
Plotly hovering on tiles in the background of a cloud of points - how to show the tooltip?
我正在将 ggplot2 图转换为 plotly。
该图由一个图块层(在背景中)和一个点层(在前景中)组成。
将鼠标悬停在图块上时,我想获得工具提示。
下面的代码大部分都能满足我的需求。当我将鼠标悬停在 "points free" 区域中的图块上时,会出现所需的工具提示。但是,当我将鼠标悬停在点密度高的区域时,工具提示不会出现。
我认为在 ggplotly
调用中使用 layerData
参数可能会有帮助,但事实并非如此。
library(ggplot2)
library(dplyr)
library(plotly)
set.seed(1)
dat_points <- data.frame(x = rnorm(100), y = rnorm(100))
dat_tiles <- expand.grid(tx = -3:3, ty = -3:3)
dat_tiles$val <- rnorm(nrow(dat_tiles))
dat_tiles$label <- sample(LETTERS[1:5], nrow(dat_tiles), replace = T)
p <- ggplot() +
geom_tile(data = dat_tiles, aes(x = tx, y = ty, fill = val, text = label)) +
geom_point(data = dat_points, aes(x = x, y = y), alpha = .5)
gg <- ggplotly(p, tooltip = "text")
gg
我希望将鼠标悬停在高密度区域(例如 0、0)时,会像在低密度区域一样迅速弹出工具提示。
编辑:添加了情节的静态图像。
您可以在 p
中切换图层的顺序,并且由于 ggplotly()
从 ggplot
对象构建的方式,您会得到一个外观相同的图,但带有所需的工具提示行为!
p <- ggplot() +
geom_point(data = dat_points, aes(x = x, y = y), alpha = 1) +
geom_tile(data = dat_tiles, aes(x = tx, y = ty, fill = val, text = label))
p # this looks bad
gg <- ggplotly(p, tooltip = "text")
gg # but this looks good!
我正在将 ggplot2 图转换为 plotly。 该图由一个图块层(在背景中)和一个点层(在前景中)组成。 将鼠标悬停在图块上时,我想获得工具提示。
下面的代码大部分都能满足我的需求。当我将鼠标悬停在 "points free" 区域中的图块上时,会出现所需的工具提示。但是,当我将鼠标悬停在点密度高的区域时,工具提示不会出现。
我认为在 ggplotly
调用中使用 layerData
参数可能会有帮助,但事实并非如此。
library(ggplot2)
library(dplyr)
library(plotly)
set.seed(1)
dat_points <- data.frame(x = rnorm(100), y = rnorm(100))
dat_tiles <- expand.grid(tx = -3:3, ty = -3:3)
dat_tiles$val <- rnorm(nrow(dat_tiles))
dat_tiles$label <- sample(LETTERS[1:5], nrow(dat_tiles), replace = T)
p <- ggplot() +
geom_tile(data = dat_tiles, aes(x = tx, y = ty, fill = val, text = label)) +
geom_point(data = dat_points, aes(x = x, y = y), alpha = .5)
gg <- ggplotly(p, tooltip = "text")
gg
我希望将鼠标悬停在高密度区域(例如 0、0)时,会像在低密度区域一样迅速弹出工具提示。
编辑:添加了情节的静态图像。
您可以在 p
中切换图层的顺序,并且由于 ggplotly()
从 ggplot
对象构建的方式,您会得到一个外观相同的图,但带有所需的工具提示行为!
p <- ggplot() +
geom_point(data = dat_points, aes(x = x, y = y), alpha = 1) +
geom_tile(data = dat_tiles, aes(x = tx, y = ty, fill = val, text = label))
p # this looks bad
gg <- ggplotly(p, tooltip = "text")
gg # but this looks good!