# IPyOverlay
[](https://github.com/psf/black)
[](https://badge.fury.io/py/ipyoverlay)
[](https://github.com/ORNL/ipyoverlay/blob/main/LICENSE)
IPyOverlay is a library of IPyWidget "wrapper components" that support rendering widgets on top of other
widgets with arbitrary/controllable positioning. This allows interfaces with
overlay elements, e.g. pop-up windows, custom context menus, etc.
The intent is to provide the mechanisms necessary to implement more complex
details-on-demand functionality (one part of the visual information-seeking mantra published
in [The Eyes Have it: A Task by Data Type Taxonomy for Information Visualizations](https://doi.org/10.1016/B978-155860915-0/50046-9)),
for dashboards and visualizations that allow a user to hone in and get more
in-depth information or additional plots when requested.
## Installation
IPyOverlay can be installed via `pip` with:
```
pip install ipyoverlay
```
## Documentation
WIP
## Screenshots

A GIF demoing interaction with an ipympl Matplotlib figure. In the demo,
Clicking a cluster opens a pop-up window with a new figure.

The background Matplotlib figure shown is rendered as an interactive ipympl
widget and wrapped in IPyOverlay’s `OverlayContainer`, and shows a UMAP of
clustered embeddings. Clicking a cluster or right-clicking and selecting an
exhibit creates a click-and-draggable pop-up window containing a new
visualization that plots more details for the selected cluster. Optionally, each
pop-up window can show a line connecting the window to the center of the cluster
it is associated with in the underlying figure.

Custom actions can be added as A right-click menu to any widget. This menu is
specific to this Matplotlib UMAP and allows users to choose whether to open a
violin or distribution plot for the hovered cluster.

If multiple separate “background” widgets (Matplotlib UMAP on the left and
Plotly map on the right) are wrapped in an `OverlayContainer`, overlay widgets
can be displayed and dragged over all of them.
## Citation
To cite usage of IPyOverlay, you can use the following bibtex:
```bibtex
@misc{doecode_127817,
title = {IPyOverlay},
author = {Martindale, Nathan and Smith, Jacob and Linville, Lisa and Hite, Jason and Adams, Mark and Stewart, Scott},
abstractNote = {IPyOverlay is a Python library that provides several IPyWidget components for use within the Jupyter software ecosystem. These components add novel UI capabilities to enable details-on-demand interaction paradigms by providing the ability to render widgets on top of other widgets with arbitrary and controllable positioning. This capability enables adding click-and-draggable overlay windows containing other widgets, right-click context menus, and more complex tooltip functionality.},
doi = {10.11578/dc.20240530.1},
url = {https://doi.org/10.11578/dc.20240530.1},
howpublished = {[Computer Software] \url{https://doi.org/10.11578/dc.20240530.1}},
year = {2024},
month = {may}
}
```
Raw data
{
"_id": null,
"home_page": "https://github.com/ORNL/ipyoverlay",
"name": "ipyoverlay",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "widget, details-on-demand, overlay, ipywidget, jupyter",
"author": "Nathan Martindale, Jacob Smith, Jason Hite, Scott L. Stewart, Mark Adams, Lisa Linville",
"author_email": "ipyoverlay-help@ornl.gov",
"download_url": "https://files.pythonhosted.org/packages/a0/6d/c5e6ee1e00f44bf753b57d5135057d310f920d64f6767ffaf8700d65ec99/ipyoverlay-0.1.0.tar.gz",
"platform": null,
"description": "# IPyOverlay\n\n[](https://github.com/psf/black)\n[](https://badge.fury.io/py/ipyoverlay)\n[](https://github.com/ORNL/ipyoverlay/blob/main/LICENSE)\n\nIPyOverlay is a library of IPyWidget \"wrapper components\" that support rendering widgets on top of other\nwidgets with arbitrary/controllable positioning. This allows interfaces with\noverlay elements, e.g. pop-up windows, custom context menus, etc.\n\nThe intent is to provide the mechanisms necessary to implement more complex\ndetails-on-demand functionality (one part of the visual information-seeking mantra published\nin [The Eyes Have it: A Task by Data Type Taxonomy for Information Visualizations](https://doi.org/10.1016/B978-155860915-0/50046-9)),\nfor dashboards and visualizations that allow a user to hone in and get more\nin-depth information or additional plots when requested.\n\n\n## Installation\n\nIPyOverlay can be installed via `pip` with:\n\n```\npip install ipyoverlay\n```\n\n## Documentation\n\nWIP\n\n## Screenshots\n\n\nA GIF demoing interaction with an ipympl Matplotlib figure. In the demo,\nClicking a cluster opens a pop-up window with a new figure.\n\n\nThe background Matplotlib figure shown is rendered as an interactive ipympl\nwidget and wrapped in IPyOverlay\u2019s `OverlayContainer`, and shows a UMAP of\nclustered embeddings. Clicking a cluster or right-clicking and selecting an\nexhibit creates a click-and-draggable pop-up window containing a new\nvisualization that plots more details for the selected cluster. Optionally, each\npop-up window can show a line connecting the window to the center of the cluster\nit is associated with in the underlying figure.\n\n\nCustom actions can be added as A right-click menu to any widget. This menu is\nspecific to this Matplotlib UMAP and allows users to choose whether to open a\nviolin or distribution plot for the hovered cluster.\n\n\nIf multiple separate \u201cbackground\u201d widgets (Matplotlib UMAP on the left and\nPlotly map on the right) are wrapped in an `OverlayContainer`, overlay widgets\ncan be displayed and dragged over all of them.\n\n## Citation\n\nTo cite usage of IPyOverlay, you can use the following bibtex:\n\n```bibtex\n@misc{doecode_127817,\n title = {IPyOverlay},\n author = {Martindale, Nathan and Smith, Jacob and Linville, Lisa and Hite, Jason and Adams, Mark and Stewart, Scott},\n abstractNote = {IPyOverlay is a Python library that provides several IPyWidget components for use within the Jupyter software ecosystem. These components add novel UI capabilities to enable details-on-demand interaction paradigms by providing the ability to render widgets on top of other widgets with arbitrary and controllable positioning. This capability enables adding click-and-draggable overlay windows containing other widgets, right-click context menus, and more complex tooltip functionality.},\n doi = {10.11578/dc.20240530.1},\n url = {https://doi.org/10.11578/dc.20240530.1},\n howpublished = {[Computer Software] \\url{https://doi.org/10.11578/dc.20240530.1}},\n year = {2024},\n month = {may}\n}\n```\n",
"bugtrack_url": null,
"license": null,
"summary": "IPyWidget wrappers to support rendering widgets on top of other widgets",
"version": "0.1.0",
"project_urls": {
"Documentation": "https://ornl.github.io/ipyoverlay/latest/index.html",
"Homepage": "https://github.com/ORNL/ipyoverlay"
},
"split_keywords": [
"widget",
" details-on-demand",
" overlay",
" ipywidget",
" jupyter"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "90b87050a2c45aa97f206a8334d8e928bfb09bbd540ac5e42e1d91b88e24101a",
"md5": "92989177b37a092b8ce86fe64b28d830",
"sha256": "6e85457e00deff33bfb87e8048f74c3cc82e35a902d1c461cd3b1ec126ff79a7"
},
"downloads": -1,
"filename": "ipyoverlay-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "92989177b37a092b8ce86fe64b28d830",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 30328,
"upload_time": "2024-06-27T14:49:09",
"upload_time_iso_8601": "2024-06-27T14:49:09.806179Z",
"url": "https://files.pythonhosted.org/packages/90/b8/7050a2c45aa97f206a8334d8e928bfb09bbd540ac5e42e1d91b88e24101a/ipyoverlay-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a06dc5e6ee1e00f44bf753b57d5135057d310f920d64f6767ffaf8700d65ec99",
"md5": "0596428faffe5608a06e774a4e23e618",
"sha256": "2d4d8ffafd4a57982040aaefa96da8a4cd991a2a4028e6ea0f30a1007c1cf215"
},
"downloads": -1,
"filename": "ipyoverlay-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "0596428faffe5608a06e774a4e23e618",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 28167,
"upload_time": "2024-06-27T14:49:11",
"upload_time_iso_8601": "2024-06-27T14:49:11.414472Z",
"url": "https://files.pythonhosted.org/packages/a0/6d/c5e6ee1e00f44bf753b57d5135057d310f920d64f6767ffaf8700d65ec99/ipyoverlay-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-27 14:49:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ORNL",
"github_project": "ipyoverlay",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "matplotlib",
"specs": []
},
{
"name": "ipyvuetify",
"specs": []
},
{
"name": "ipywidgets",
"specs": []
},
{
"name": "plotly",
"specs": []
},
{
"name": "pytest",
"specs": []
},
{
"name": "black",
"specs": []
},
{
"name": "flake8",
"specs": []
},
{
"name": "isort",
"specs": []
},
{
"name": "pre-commit",
"specs": []
},
{
"name": "pylint",
"specs": []
},
{
"name": "build",
"specs": []
},
{
"name": "twine",
"specs": []
}
],
"lcname": "ipyoverlay"
}