pythonpandasplotlyholoviewspandas-bokeh

Change pandas plotting backend to get interactive plots instead of matplotlib static plots


When I use pandas df.plot() it has matplotlib as a default plotting backend. But this creates static plots.

I would like interactive plots, so I have to change the pandas plotting background.

How do I do change the plotting backend of pandas to have a different library creating my plots when i use .plot()?


Solution

  • You need pandas >= 0.25 to change the plotting backend of pandas.

    The available plotting backends are:

    So, the default setting is:

    pd.options.plotting.backend = 'matplotlib'
    

    You can change the plotting library that pandas uses as follows. In this case it sets hvplot / holoviews as the plotting backend:

    pd.options.plotting.backend = 'hvplot'
    

    Or you can also use (which is basically the same):

    pd.set_option('plotting.backend', 'hvplot')
    

    Now you have hvplot / holoviews as your plotting backend for pandas and it will give you interactive holoviews plots instead of static matplotlib plots.

    Of course you need to have library hvplot / holoviews + dependencies installed for this to work.

    Here's a code example resulting in an interactive plot. It uses the standard .plot() pandas syntax:

    import numpy as np
    import pandas as pd
    
    import hvplot
    import hvplot.pandas
    
    pd.options.plotting.backend = 'hvplot'
    
    data = np.random.normal(size=[50, 2])
    
    df = pd.DataFrame(data, columns=['x', 'y'])
    
    df.plot(kind='scatter', x='x', y='y')