Download or save matplotlib figure from notebook

ConusAdonis Registered Posts: 8 ✭✭✭✭
I would like to download matplotlib figures I have created in a notebook to use them in communications. How can I do this. When I use savefig, I cannot find the resulting file anywhere.

This is a company installation so I do not have terminal access to the server's file system, so I need a way to download the figure or save them to folder I can access from DataIKU.

I noticed I can create static insights from matplotlib figures using dataIKU API, but these static insights cannot be downloaded either as far as I can see.

Best Answer

  • UserBird
    UserBird Dataiker, Alpha Tester Posts: 535 Dataiker
    edited July 18 Answer ✓


    To detail the solution provided by my coworker, here a more detailed example:

    1° Create a file system folder in the flow, lets call it "plots"

    2° in your jupyter notebook, adapt the following code:

    import dataiku
    import numpy as np
    import matplotlib.pyplot as plt
    import io
    from dataiku.core.managed_folder import Folder

    x1 = np.linspace(0.0, 5.0)
    x2 = np.linspace(0.0, 2.0)

    y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
    y2 = np.cos(2 * np.pi * x2)

    plt.subplot(2, 1, 1)
    plt.plot(x1, y1, 'o-')
    plt.title('A tale of 2 subplots')
    plt.ylabel('Damped oscillation')

    plt.subplot(2, 1, 2)
    plt.plot(x2, y2, '.-')
    plt.xlabel('time (s)')
    bs = io.BytesIO()
    plt.savefig(bs, format="png")
    folder = Folder("plots")
    folder.upload_stream("fig.png", bs.getvalue())

    3° Come back to the flow, open the "plots" manager folder, fig.png should be present in it.





Setup Info
      Help me…