更改 Pandas 绘图后端以获得交互式绘图而不是 matplotlib 静态绘图

San*_*ord 15 python pandas holoviews pandas-bokeh hvplot

当我使用 Pandas 时,df.plot()它有 matplotlib 作为默认绘图后端。但这会创建静态图。

我想要交互式绘图,所以我必须更改熊猫绘图背景。

当我使用 .plot() 时,如何更改 Pandas 的绘图后端以使用不同的库来创建我的绘图?

San*_*ord 27

您需要 pandas >= 0.25 来更改 pandas 的绘图后端。

可用的绘图后端是:

所以,默认设置是:

pd.options.plotting.backend = 'matplotlib'
Run Code Online (Sandbox Code Playgroud)

您可以按如下方式更改 pandas 使用的绘图库。在这种情况下,它将hvplot /holoviews 设置为绘图后端:

pd.options.plotting.backend = 'hvplot'
Run Code Online (Sandbox Code Playgroud)

或者你也可以使用(基本相同):

pd.set_option('plotting.backend', 'hvplot')
Run Code Online (Sandbox Code Playgroud)

现在你有 hvplot/holoviews 作为你的 Pandas 绘图后端,它将为你提供交互式全息图而不是静态 matplotlib 图。

当然,您需要安装库 hvplot / Holoviews + 依赖项才能使其工作。

这是一个生成交互式绘图的代码示例。它使用标准的 .plot() 熊猫语法:

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')
Run Code Online (Sandbox Code Playgroud)

  • Plotly 后端可用于 >= 4.8.0 (4认同)

jef*_*ale 8

从plotly 4.8.0开始,您可以使用plotly与pandas 1.0+进行交互式绘图。

更新为pip install -U plotly

将绘图后端设置为plotly:

pd.options.plotting.backend = "plotly" 

df = pd.DataFrame(dict(a=[1, 2, 3], b=[2, 4, 6]))
df.plot()
Run Code Online (Sandbox Code Playgroud)

这是公告

请注意,这些后端与默认 matplotlib 后端使用的所有参数并不完全一致。

另请注意,Altair 需要安装altair_pandas


San*_*ord 5

要更改整个会话的pandas 绘图后端,请使用:

pd.options.plotting.backend = 'plotly'
Run Code Online (Sandbox Code Playgroud)

要仅更改一个特定绘图的pandas 绘图后端,请使用:

df.plot(backend='plotly')
Run Code Online (Sandbox Code Playgroud)
也可以看看:

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