ipyoverlay


Nameipyoverlay JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/ORNL/ipyoverlay
SummaryIPyWidget wrappers to support rendering widgets on top of other widgets
upload_time2024-06-27 14:49:11
maintainerNone
docs_urlNone
authorNathan Martindale, Jacob Smith, Jason Hite, Scott L. Stewart, Mark Adams, Lisa Linville
requires_python>=3.9
licenseNone
keywords widget details-on-demand overlay ipywidget jupyter
VCS
bugtrack_url
requirements matplotlib ipyvuetify ipywidgets plotly pytest black flake8 isort pre-commit pylint build twine
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # IPyOverlay

[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![PyPI version](https://badge.fury.io/py/ipyoverlay.svg)](https://badge.fury.io/py/ipyoverlay)
[![License](https://img.shields.io/pypi/l/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

![Demo GIF of interacting with a plot with ipyoverlay](img/demo.gif)
A GIF demoing interaction with an ipympl Matplotlib figure. In the demo,
Clicking a cluster opens a pop-up window with a new figure.

![Figures rendered on top of other figures](img/overlay_figures.png)
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.

![Right click context menu](img/context_menu.png)
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.

![Overlay widgets can span larger areas in the notebook](img/overlay_figures_over_multiple.png)
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[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![PyPI version](https://badge.fury.io/py/ipyoverlay.svg)](https://badge.fury.io/py/ipyoverlay)\n[![License](https://img.shields.io/pypi/l/ipyoverlay)](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![Demo GIF of interacting with a plot with ipyoverlay](img/demo.gif)\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![Figures rendered on top of other figures](img/overlay_figures.png)\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![Right click context menu](img/context_menu.png)\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![Overlay widgets can span larger areas in the notebook](img/overlay_figures_over_multiple.png)\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"
}
        
Elapsed time: 0.81474s