悬停时突出显示组中的所有值
Highlight all values from a group on hover
假设数据
library(ggplot2)
library(plotly)
set.seed(357)
xy <- data.frame(letters = rep(c("a", "b", "c"), times = 3),
values = runif(9),
groups = rep(c("group1", "group2", "group3"), each = 3))
letters values groups
1 a 0.9913409 group1
2 b 0.6245529 group1
3 c 0.5245744 group1
4 a 0.4601817 group2
5 b 0.2254525 group2
6 c 0.5898001 group2
7 a 0.1716801 group3
8 b 0.3195294 group3
9 c 0.8953055 group3
ggplotly(
ggplot(xy, aes(x = letters, y = values, group = groups)) +
theme_bw() +
geom_point()
)
我的目标是在悬停时突出显示属于同一组的所有点。例如。将鼠标悬停在右上角的点上,该组(圆圈)中的所有点都会变成红色。使用 layout(hovermode = "x")
可以实现类似的效果,但前提是有人有兴趣突出显示其中一个轴上的所有点。除了 x
、y
或 closest
(它们是 hovermode
的模式)之外,我希望自定义变量具有相同的行为。
这可能会满足您的需要
示例数据
set.seed(357)
xy <- data.frame(letters = rep(c("a", "b", "c"), times = 3),
values = runif(9),
groups = rep(c("group1", "group2", "group3"), each = 3))
绘图
#create a SharedData object for use in the ggplot below, group by 'groups'
d <- highlight_key(xy, ~groups )
#create a normal ggplot to fit your needs, but use the SharedData object as data for the chart
p <- ggplot( d, aes(x = letters, y = values, group = groups)) + theme_bw() + geom_point()
#now ggplotly the newly created ggplot, and add text for the tooltips as needed
gg <- ggplotly( p, tooltip = "groups" )
#set the highlight-options to your liking, and plot...
highlight( gg, on = "plotly_hover", off = "plotly_deselect", color = "red" )
绘图结果
假设数据
library(ggplot2)
library(plotly)
set.seed(357)
xy <- data.frame(letters = rep(c("a", "b", "c"), times = 3),
values = runif(9),
groups = rep(c("group1", "group2", "group3"), each = 3))
letters values groups
1 a 0.9913409 group1
2 b 0.6245529 group1
3 c 0.5245744 group1
4 a 0.4601817 group2
5 b 0.2254525 group2
6 c 0.5898001 group2
7 a 0.1716801 group3
8 b 0.3195294 group3
9 c 0.8953055 group3
ggplotly(
ggplot(xy, aes(x = letters, y = values, group = groups)) +
theme_bw() +
geom_point()
)
我的目标是在悬停时突出显示属于同一组的所有点。例如。将鼠标悬停在右上角的点上,该组(圆圈)中的所有点都会变成红色。使用 layout(hovermode = "x")
可以实现类似的效果,但前提是有人有兴趣突出显示其中一个轴上的所有点。除了 x
、y
或 closest
(它们是 hovermode
的模式)之外,我希望自定义变量具有相同的行为。
这可能会满足您的需要
示例数据
set.seed(357)
xy <- data.frame(letters = rep(c("a", "b", "c"), times = 3),
values = runif(9),
groups = rep(c("group1", "group2", "group3"), each = 3))
绘图
#create a SharedData object for use in the ggplot below, group by 'groups'
d <- highlight_key(xy, ~groups )
#create a normal ggplot to fit your needs, but use the SharedData object as data for the chart
p <- ggplot( d, aes(x = letters, y = values, group = groups)) + theme_bw() + geom_point()
#now ggplotly the newly created ggplot, and add text for the tooltips as needed
gg <- ggplotly( p, tooltip = "groups" )
#set the highlight-options to your liking, and plot...
highlight( gg, on = "plotly_hover", off = "plotly_deselect", color = "red" )
绘图结果