Search code examples
pythonpandashistogram

save a pandas.Series histogram plot to file


In ipython Notebook, first create a pandas Series object, then by calling the instance method .hist(), the browser displays the figure.

I am wondering how to save this figure to a file (I mean not by right click and save as, but the commands needed in the script).


Solution

  • Use the Figure.savefig() method, like so:

    ax = s.hist()  # s is an instance of Series
    fig = ax.get_figure()
    fig.savefig('/path/to/figure.pdf')
    

    It doesn't have to end in pdf, there are many options. Check out the documentation.

    Alternatively, you can use the pyplot interface and just call the savefig as a function to save the most recently created figure:

    import matplotlib.pyplot as plt
    s.hist()
    plt.savefig('path/to/figure.pdf')  # saves the current figure
    

    Plots from multiple columns

    • Added from a comment toto_tico made on 2018-05-11
    • If you are getting this error AttributeError: 'numpy.ndarray' object has no attribute 'get_figure', then it is likely that you are plotting multiple columns.
      • In this case, ax will be an array of all the axes.
    ax = s.hist(columns=['colA', 'colB'])
    
    # try one of the following
    fig = ax[0].get_figure()
    fig = ax[0][0].get_figure()
    
    fig.savefig('figure.pdf')