Skip to content

How to use Neptune with Matplotlib#

Open in Colab

Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python. With Neptune, you can log and display Matplotlib charts as static images or interactive HTML.

Matplotlib figures in Neptune

See in Neptune  Code examples  

Before you start#

  • Sign up at neptune.ai/register.
  • Create a project for storing your metadata.
  • Have Matplotlib and Neptune installed:

    pip install -U matplotlib neptune
    
    conda install -c conda-forge matplotlib neptune
    
Upgrading with neptune-client already installed

Important: To smoothly upgrade to the 1.0 version of the Neptune client library, first uninstall the neptune-client library and then install neptune.

pip uninstall neptune-client
pip install neptune

(Optional) To log static Matplotlib figures as interactive Plotly charts, install the plotly library:

pip install -U plotly
conda install -c conda-forge plotly
Plotly incompatibility

Plotly is not compatible with newer Matplotlib versions (3.5.0+) due to the fact that mpl_to_plotly() uses deprecated Matplotlib functionalities.

To use Plotly together with Matplotlib, you may need to downgrade your Matplotlib version to <3.5. For more information, see Plotly issue 1568 and issue 3624 on GitHub.

Matplotlib logging example#

  1. Import Neptune and start a run:

    import neptune
    
    run = neptune.init_run()  # (1)!
    
    1. If you haven't set up your credentials, you can log anonymously:

      neptune.init_run(
          api_token=neptune.ANONYMOUS_API_TOKEN,
          project="common/matplotlib-support",
      )
      
  2. Create a sample figure:

    import matplotlib.pyplot as plt
    import numpy as np
    
    np.random.seed(42)
    data = np.random.randn(2, 100)
    
    figure, ax = plt.subplots(2, 2, figsize=(5, 5))
    ax[0, 0].hist(data[0])
    ax[1, 0].scatter(data[0], data[1])
    ax[0, 1].plot(data[0], data[1])
    
  3. Log the figure to Neptune

    1. As a static image:

      run["static-img"].upload(figure)
      
    2. (With Plotly installed) As an interactive Plotly chart:

      from neptune.types import File
      
      run["interactive-img"].upload(File.as_html(figure))
      
      Info

      Not all Matplotlib charts can be converted to interactive Plotly charts. If the conversion is not possible, Neptune falls back to logging the chart as an image.

  4. To stop the connection to Neptune and sync all data, call the stop() method:

    run.stop()
    
  5. To open the run, click the Neptune link in the console output.

    Example link: https://app.neptune.ai/common/matplotlib-support/e/MAT-1/metadata

Result

The resulting figure is logged as an HTML object.

You can view it in the All metadata section.