New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

outset

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

outset

add zoom indicators, insets, and magnified panels to matplotlib/seaborn visualizations with ease!

  • 0.1.9
  • Source
  • PyPI
  • Socket score

Maintainers
1

.. figure:: https://raw.githubusercontent.com/mmore500/outset/481089653d858f14e636c3757df4927783bd5d23/docs/assets/outset-wordmark.png :target: https://github.com/mmore500/outset :alt: outset wordmark

|PyPi| |docs| |GitHub stars| |CI| |Deploy Sphinx documentation to Pages| |zenodo|

add zoom indicators, insets, and magnified panels to matplotlib/seaborn visualizations with ease!

Features

  • compose axes grids to juxtapose a complete plot with data subsets or magnified subregions
  • render grid axes as overlaid insets
  • draw elegant zoom indicators with publication-ready default styling
  • enjoy a familiar, data-oriented interface --- with full feature sets inherited directly from seaborn
  • abstract away handling of padding and aspect ratios
  • fine-tune appearance and layout with extensive styling options and bundled numbering/symbol library
  • use hooks to inject custom functionality, like numbering/symbols and layout tweaks

Install

python3 -m pip install outset

.. figure:: https://raw.githubusercontent.com/mmore500/outset/481089653d858f14e636c3757df4927783bd5d23/docs/assets/outset-gallery-collage.png :target: https://mmore500.com/outset/gallery.html :alt: outset gallery collage

Find example code and visualizations |gallery|_.

.. _gallery: https://mmore500.com/outset/gallery.html

.. |gallery| replace:: here

Basic Usage

Use outset.OutsetGrid to compose source plot with zoom panels on an axes grid. Zoom sections can be a) designated manually or b) inferred to bound data subsets. To overlay zoom panels onto source plot, c) call outset.inset_outsets.

a) Create OutsetGrid, Explicit Zoom Areas ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code:: python

  from matplotlib import pyplot as plt
  import numpy as np
  import outset as otst
  import seaborn as sns
  # adapted from # https://matplotlib.org/stable/gallery/
  i, a, b, c, d = np.arange(0.0, 2*np.pi, 0.01), 1, 7, 3, 11

  # 3 axes grid: source plot and two zoom frames
  grid = otst.OutsetGrid([(-10, 8, -8, 12), (-5, 5, -1, 3)])  # frame coords
  grid.broadcast(plt.plot,  # run plotter over all axes
     np.sin(i*a)*np.cos(i*b) * 20, np.sin(i*c)*np.cos(i*d) * 20,  # line coords
     c="k", zorder=-1)  # kwargs forwarded to plt.plot

  grid.marqueeplot()  # set axlims and render marquee annotations

..

.. figure:: https://raw.githubusercontent.com/mmore500/outset/481089653d858f14e636c3757df4927783bd5d23/docs/assets/usage1.png :alt: usage example 1 result

b) Create OutsetGrid, Inferred Zoom Areas ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code:: python

  grid = otst.OutsetGrid(data=sns.load_dataset("iris").dropna(),  # facet over axes grid
     x="petal_width", y="petal_length",
     col="species",  # create zoom panel for each species
     hue="species",  # color marquee annotations by species
     aspect=0.6, height=3)  # adjust axes grid geometry
  grid.map_dataframe(sns.scatterplot,  # map plotter over faceted data
     x="petal_width", y="petal_length", legend=False, zorder=0)

  grid.marqueeplot()   # set axlims and render marquee annotations
  grid.add_legend()  # add figure-level legend

..

.. figure:: https://raw.githubusercontent.com/mmore500/outset/481089653d858f14e636c3757df4927783bd5d23/docs/assets/usage2.png :alt: usage example 2 result

c) Overlay Zoom Panels as Insets ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: python

  grid = otst.OutsetGrid(data=sns.load_dataset("iris").dropna(),  # facet over axes grid
     x="petal_width", y="petal_length",
     col="species",  # put each species in its own outset
     hue="species",   # make different color marquees
     aspect=1.5, height=4)  # adjust axes grid geometry
  grid.map_dataframe(sns.scatterplot,  # map plotter over faceted data
     x="petal_width", y="petal_length", legend=False, zorder=0)

  grid.add_legend()  # add figure-level legend
  otst.inset_outsets(grid, insets="NW")  # inset outsets in upper-left corner
  grid.marqueeplot()  # set axlims and render marquee annotations

..

.. figure:: https://raw.githubusercontent.com/mmore500/outset/481089653d858f14e636c3757df4927783bd5d23/docs/assets/usage3.png :alt: usage example 3 result

See the |quickstart|_ for more detailed usage information.

.. _quickstart: https://mmore500.com/outset/quickstart.html

.. |quickstart| replace:: quickstart guide

API Overview

  • |OutsetGrid|_: compose a source plot and zoom regions over it (e.g., "outsets") on a multiplot lattice

    • designate zoom regions directly, or as regions containing data subsets
    • object-oriented, "tidy data" interface a la seaborn.FacetGrid
  • |inset_outsets|_: rearrange an OutsetGrid to place outset zoom regions as insets over the original source axes

  • |marqueeplot|_: axis-level "tidy data" interface to draw marquees framing specified subsets of data

  • |draw_marquee|_: low-level interface to draw individual marquee annotations

.. |OutsetGrid| replace:: outset.OutsetGrid .. _OutsetGrid: https://mmore500.com/outset/_autosummary/outset.OutsetGrid.html

.. |inset_outsets| replace:: outset.inset_outsets .. _inset_outsets: https://mmore500.com/outset/_autosummary/outset.inset_outsets.html

.. |marqueeplot| replace:: outset.marqueeplot .. _marqueeplot: https://mmore500.com/outset/_autosummary/outset.marqueeplot.html

.. |draw_marquee| replace:: outset.draw_marquee .. _draw_marquee: https://mmore500.com/outset/_autosummary/outset.draw_marquee.html

Read the full API documentation |apidocs|_.

.. _apidocs: https://mmore500.com/outset/_autosummary/outset.html#module-outset

.. |apidocs| replace:: here

Available Styling Extensions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Callout mark glyphs: customize marquee identifiers; pass as mark_glyph kwarg

|MarkAlphabeticalBadges|_ | |MarkArrow|_ | |MarkInlaidAsterisk|_ | |MarkMagnifyingGlass|_ | |MarkRomanBadges|_

.. image:: https://raw.githubusercontent.com/mmore500/outset/481089653d858f14e636c3757df4927783bd5d23/docs/assets/callout-mark-glyphs.png :alt: comparison of available glyphs

These mark glyphs can also be used directly, independently of the rest of the library!

.. |MarkAlphabeticalBadges| replace:: outset.mark.MarkAlphabeticalBadges .. _MarkAlphabeticalBadges: https://mmore500.com/outset/_autosummary/outset.mark.MarkAlphabeticalBadges.html

.. |MarkArrow| replace:: outset.mark.MarkArrow .. _MarkArrow: https://mmore500.com/outset/_autosummary/outset.mark.MarkArrow.html

.. |MarkInlaidAsterisk| replace:: outset.mark.MarkInlaidAsterisk .. _MarkInlaidAsterisk: https://mmore500.com/outset/_autosummary/outset.mark.MarkInlaidAsterisk.html

.. |MarkMagnifyingGlass| replace:: outset.mark.MarkMagnifyingGlass .. _MarkMagnifyingGlass: https://mmore500.com/outset/_autosummary/outset.mark.MarkMagnifyingGlass.html

.. |MarkRomanBadges| replace:: outset.mark.MarkRomanBadges .. _MarkRomanBadges: https://mmore500.com/outset/_autosummary/outset.mark.MarkRomanBadges.html

Callout tweaks: customize how marquee callouts are shaped and positioned; pass as leader_tweak kwarg

  • |TweakReflect|_: flip callouts left-right/up-down
  • |TweakSpreadArea|_: spread callout glyphs apart to resolve overlaps

.. |TweakReflect| replace:: outset.mark.TweakReflect .. _TweakReflect: https://mmore500.com/outset/_autosummary/outset.tweak.TweakReflect.html

.. |TweakSpreadArea| replace:: outset.mark.TweakSpreadArea .. _TweakSpreadArea: https://mmore500.com/outset/_autosummary/outset.tweak.TweakSpreadArea.html

Citation

If outset is used in scientific publication, please cite it as

Matthew Andres Moreno. (2023). mmore500/outset. Zenodo. https://doi.org/10.5281/zenodo.10426106

.. code:: bibtex

@software{moreno2023outset,
  author = {Matthew Andres Moreno},
  title = {mmore500/outset},
  month = dec,
  year = 2023,
  publisher = {Zenodo},
  doi = {10.5281/zenodo.10426106},
  url = {https://doi.org/10.5281/zenodo.10426106}
}

Consider also citing matplotlib <https://matplotlib.org/stable/users/project/citing.html>__ and seaborn <https://seaborn.pydata.org/citing.html>__ . And don't forget to leave a star on GitHub <https://github.com/mmore500/outset/stargazers>__!

Contributing

This project welcomes contributions and suggestions. Documentation includes detailed information to get you started <https://mmore500.com/outset/contributing.html#>__.

.. |PyPi| image:: https://img.shields.io/pypi/v/outset.svg :target: https://pypi.python.org/pypi/outset .. |CI| image:: https://github.com/mmore500/outset/actions/workflows/CI.yml/badge.svg :target: https://github.com/mmore500/outset/actions .. |Deploy Sphinx documentation to Pages| image:: https://github.com/mmore500/outset/actions/workflows/sphinx.yml/badge.svg :target: https://github.com/mmore500/outset/actions/workflows/sphinx.yml .. |GitHub stars| image:: https://img.shields.io/github/stars/mmore500/outset.svg?style=round-square&logo=github&label=Stars&logoColor=white :target: https://github.com/mmore500/outset .. |zenodo| image:: https://zenodo.org/badge/729401509.svg :target: https://zenodo.org/doi/10.5281/zenodo.10426106 .. |docs| image:: https://img.shields.io/badge/pages%20-%20docs%20-%20fedcba?logo=github :target: https://mmore500.com/outset

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc