Assume data
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() )
My goal is to, on hover, highlight all points that belong to the same group. E.g. on hover over the point in the upper right corner, all points from this group (circles) would turn red. Something similar can be achieved using layout(hovermode = "x")
but only if one is interested in highlighting all points on one of the axes. I would like the same behavior for custom variable other than x
, y
or closest
(which are modes of hovermode
).
this will probably suit your needs
sample data
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))
plotting
#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" )
plot results
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With