Sander van den Oord
Sander van den Oord

Reputation: 12818

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()?

Upvotes: 26

Views: 34379

Answers (4)

jeffhale
jeffhale

Reputation: 4042

As of plotly 4.8.0 you can use plotly for interactive plotting with pandas 1.0+.

Update with pip install -U plotly

Set the plotting backend to plotly:

pd.options.plotting.backend = "plotly" 

df = pd.DataFrame(dict(a=[1, 2, 3], b=[2, 4, 6]))
df.plot()

Here's the announcement

Note that these backends don't have full alignment with all the arguments that work with the default matplotlib backend.

Also note that Altair requires altair_pandas installed.

Upvotes: 8

Sander van den Oord
Sander van den Oord

Reputation: 12818

To change the pandas plotting backend for the whole session, use:

pd.options.plotting.backend = 'plotly'

To change the pandas plotting backend only for one particular plot, use:

df.plot(backend='plotly')

See also:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html

https://pandas.pydata.org/docs/user_guide/options.html?highlight=plotting%20backend#available-options

Upvotes: 5

neves
neves

Reputation: 39403

You can also alternate backends using the backend to the plot method itself:

df.plot(backend='matplotlib')

I'm learning a new backend and I use it when I want to reproduce my chart in matplotlib. The parameters of the plot method aren't the same in different backends.

Upvotes: 1

Sander van den Oord
Sander van den Oord

Reputation: 12818

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')

Upvotes: 41

Related Questions