You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
enable multiple hover boxes for overlapping/multiple points #2476
When hover information is shown for points e.g. in a scatter plot, the following situations can occur:
there are multiple points on exactly the same coordinates
there are multiple points close to the same coordinates and the markers used to visualize those points overlap in the graph
Hover information for all those multiple points should be shown, especially in cases where the hover information includes additional data not shown directly in the graph.
The hvPlot library does this correctly: it shows stacked hover boxes for all the data points under the cursor. Plotly only shows one hover box and it is not clear which one.
I think this is an actual bug since it makes it easy to miss data and the hover information does not represent the actual data in the graph.
Here is an example using the Iris data set and Plotly:
My concern is that showing a single random data point when there are many can lead to serious misinterpretation, especially when one is used to a library like hvPlot which does show all the data points. One of the main purposes of visualizations and graphs is to learn about and understand data and I think all packages have to be very careful about how they do that.
So if the current behaviour is not considered a bug, it should at least be clearly documented and explained wherever it could be important.
But having a mode to actually display
points with identical graph coordinates
and optionally also points with close graph coordinates where the visual representation of the points overlap
would be a very important feature request then :)
Currently I would personally need some kind of workaround, so anything that would help to implement an equivalent functionality would be tremendously helpful.
All I can see at the moment is processing the data myself to calculate a list of data points per distinct coordinate and then use code and a custom hover template to do it all in code, but that is pretty inconvenient in comparison to just using hvPlot which just does it :)
Yes, this would be a feature we would need to add in the Javascript library that powers Plotly.py. It's been brought up in the past here: plotly/plotly.js#4294
Currently running into a situation where this would be a super nice feature. It's quite common that the data I'm working with overlaps on x,y and the data is small and discrete enough that adding jitter to resolve this wouldn't be appropriate.
I also had this problem. As a workaround, I introduced jitter. I couldn't get it working with plot_ly, but, thankfully I succeeded with ggplotly.
I know this question was asked regareding Python; I'm using R but it's the exact same problem. Here is my solution in R, hopefully it helps someone if it could be translated to Python!
Below are screenshots of the result, one with jitter and one without. You can see without jitter it is very grid-like, and the opacity/alpha of the dots is darker where there are overlaps. On the jitter version you can actually see all the dots, even though their location is no longer precise. Tradeoffs, eh!!
changed the title [-]Only a single hover box shown for overlapping/multiple points[/-][+]enable multiple hover boxes for overlapping/multiple points[/+]on Aug 12, 2024
Activity
nicolaskruchten commentedon May 17, 2020
I agree that we should have an additional hover mode for this behaviour but the current behaviour is not considered a bug at this time :)
johann-petrak commentedon May 17, 2020
My concern is that showing a single random data point when there are many can lead to serious misinterpretation, especially when one is used to a library like hvPlot which does show all the data points. One of the main purposes of visualizations and graphs is to learn about and understand data and I think all packages have to be very careful about how they do that.
So if the current behaviour is not considered a bug, it should at least be clearly documented and explained wherever it could be important.
But having a mode to actually display
would be a very important feature request then :)
Currently I would personally need some kind of workaround, so anything that would help to implement an equivalent functionality would be tremendously helpful.
All I can see at the moment is processing the data myself to calculate a list of data points per distinct coordinate and then use code and a custom hover template to do it all in code, but that is pretty inconvenient in comparison to just using hvPlot which just does it :)
nicolaskruchten commentedon May 17, 2020
Like I said, I agree :)
As far as I know it’s not a random point we display the hover label for, it’s the last one drawn which is the latest one in the trace IIRC.
johann-petrak commentedon Jul 28, 2020
I guess the proper workaround/fix for this also depends on the rendering mode?
Is the main route to fixing this maybe through plotly.js?
nicolaskruchten commentedon Aug 10, 2020
Yes, this would be a feature we would need to add in the Javascript library that powers Plotly.py. It's been brought up in the past here: plotly/plotly.js#4294
nicolaskruchten commentedon Aug 10, 2020
See also plotly/plotly.js#4999
fern35 commentedon Aug 24, 2020
having the same problem. When can we expect this feature to come out ?
nicolaskruchten commentedon Aug 24, 2020
It's a good feature and we'd love to have it in the library but it's not on anyone's roadmap at the moment as far as I know. That said, we as maintainers would be happy to help someone from the community to implement it in Plotly.js, or to accept sponsorship to get it on to our short-term roadmap :)
fern35 commentedon Aug 24, 2020
ok great, thx for the information!
massiIE commentedon Jan 4, 2022
Any updates?
beanrepo commentedon Feb 8, 2022
It would be great to add this feature
keithgmitchell commentedon Oct 31, 2022
Yeah its odd this hasnt been added. It should be relatively straighforward...
theoturner commentedon Jan 30, 2023
Another bump hoping this is put on the roadmap - this seems like a very common occurrence for any type of plot.
ChrisBeirne commentedon Apr 24, 2023
I would love this feature also - this happens all the time with real data!
Valentin-Guillot commentedon Jul 6, 2023
Same here, would be really great to have this feature for users not to lose information when using the graph
minkyokim19 commentedon Jul 13, 2023
I would also really like this feature! Especially for mapping with Plotly.
brady-lamson commentedon May 31, 2024
Currently running into a situation where this would be a super nice feature. It's quite common that the data I'm working with overlaps on x,y and the data is small and discrete enough that adding jitter to resolve this wouldn't be appropriate.
slb534 commentedon Jul 8, 2024
I also had this problem. As a workaround, I introduced jitter. I couldn't get it working with plot_ly, but, thankfully I succeeded with ggplotly.
I know this question was asked regareding Python; I'm using R but it's the exact same problem. Here is my solution in R, hopefully it helps someone if it could be translated to Python!
Below are screenshots of the result, one with jitter and one without. You can see without jitter it is very grid-like, and the opacity/alpha of the dots is darker where there are overlaps. On the jitter version you can actually see all the dots, even though their location is no longer precise. Tradeoffs, eh!!
[-]Only a single hover box shown for overlapping/multiple points[/-][+]enable multiple hover boxes for overlapping/multiple points[/+]