Skip to main content

Create matplotlib and plotly charts with the same few lines of code.

Project description

interplot

License: GPL v3 PyPI version Binder NBViewer

Create matplotlib and plotly charts with the same few lines of code.

It combines the best of the matplotlib and the plotly worlds through a unified, flat API.

Switch between matplotlib and plotly with the single keyword interactive. All the necessary boilerplate code to translate between the packages is contained in this module.

Currently supported building blocks:

  • scatter plots
    • line
    • scatter
    • linescatter
  • bar charts bar
  • histogram hist
  • boxplot boxplot
  • heatmap heatmap
  • linear regression regression
  • line and area fill fill
  • horizontal and vertical lines
    • hline
    • vline
  • annotations text

Supported

  • 2D subplots
  • automatic color cycling
  • 3 different API modes
    • One line of code

      >>> interplot.line([0,4,6,7], [1,2,4,8])
      [plotly line figure]
      
      >>> interplot.hist(np.random.normal(40, 8, 1000), interactive=False)
      [matplotlib hist figure]
      
      >>> interplot.boxplot(
      ...     [
      ...         np.random.normal(20, 5, 1000),
      ...         np.random.normal(40, 8, 1000),
      ...         np.random.normal(60, 5, 1000),
      ...     ],
      ... )
      [plotly boxplots]
      
    • Decorator to auto-initialize plots to use in your methods

      >>> @interplot.magic_plot
      ... def plot_my_data(fig=None):
      ...     # import and process your data...
      ...     data = np.random.normal(2, 3, 1000)
      ...     # draw with the fig instance obtained from the decorator function
      ...     fig.add_line(data, label="my data")
      ...     fig.add_fill((0, 999), (-1, -1), (5, 5), label="sigma")
      >>> plot_my_data(title="My Recording")
      [plotly figure "My Recording"]
      
      >>> @interplot.magic_plot_preset(interactive=False, title="Preset Title")
      >>> def plot_my_data_preconfigured(fig=None):
      ...     # import and process your data...
      ...     data = np.random.normal(2, 3, 1000)
      ...     # draw with the fig instance obtained from the decorator function
      ...     fig.add_line(data, label="my data")
      ...     fig.add_fill((0, 999), (-1, -1), (5, 5), label="sigma")
      >>> plot_my_data_preconfigured()
      [matplotlib figure "Preset Title"]
      
    • The interplot.Plot class for full control

      >>> fig = interplot.Plot(
      ...     interactive=True,
      ...     title="Everything Under Control",
      ...     fig_size=(800, 500),
      ...     rows=1,
      ...     cols=2,
      ...     shared_yaxes=True,
      ...     # ...
      ... )
      >>> fig.add_hist(np.random.normal(1, 0.5, 1000), row=0, col=0)
      >>> fig.add_boxplot(
      ...     [
      ...         np.random.normal(20, 5, 1000),
      ...         np.random.normal(40, 8, 1000),
      ...         np.random.normal(60, 5, 1000),
      ...     ],
      ...     row=0,
      ...     col=1,
      ... )
      ... # ...
      >>> fig.post_process()
      >>> fig.show()
      [plotly figure "Everything Under Control"]
      
      >>> fig.save("export/path/file.html")
      saved figure at export/path/file.html
      

Resources

Licence

License: GPL v3

Demo

View on NBViewer: NBViewer

Try on Binder: Binder

Install

pip install interplot

install development branch

pip install git+https://github.com/janjoch/interplot.git@development

active development installation

  1. git clone https://github.com/janjoch/interplot
  2. cd interplot
  3. pip install -e .

Contribute

Ideas, bug reports/fixes, feature requests and code submissions are very welcome! Please write to janjo@duck.com or directly into a pull request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

interplot-1.2.0.tar.gz (52.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

interplot-1.2.0-py3-none-any.whl (52.1 kB view details)

Uploaded Python 3

File details

Details for the file interplot-1.2.0.tar.gz.

File metadata

  • Download URL: interplot-1.2.0.tar.gz
  • Upload date:
  • Size: 52.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for interplot-1.2.0.tar.gz
Algorithm Hash digest
SHA256 e1e56e8d36f93a3cb4f54946da2596ebaeb37d65d153f91d9b0f5a918b595720
MD5 71b0c10a0cb4e458c0ebef3687623760
BLAKE2b-256 34e92f33efa8ea7bd96b98b2121e070b16e804ee159a08d9da51f5f4204a6574

See more details on using hashes here.

File details

Details for the file interplot-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: interplot-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 52.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for interplot-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b9b02ebf5ed2fff564924e22e05b086c7f4d29fa5a7436c922e01c5033da346f
MD5 55caa71c1e708a34d43c9fbfce6f83b7
BLAKE2b-256 6b650d054a7baff63639c0a48250f82e05f20bedb0ceb1bc2a7de2b5204f6e06

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page