改变pandas绘图的后端,以获得交互式绘图,而不是matplotlib静态绘图

22 人关注

当我使用pandas df.plot() 时,它有matplotlib作为默认的绘图后端。但是,这将创建静态图。 我想要交互式绘图,所以我必须改变pandas的绘图背景。

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

python
pandas
plotly
holoviews
pandas-bokeh
Sander van den Oord
Sander van den Oord
发布于 2019-10-18
4 个回答
Sander van den Oord
Sander van den Oord
发布于 2021-05-05
已采纳
0 人赞同

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

可用的绘图后端是:。

  • matplotlib
  • hvplot >= 0.5.1
  • holoviews
  • pandas_bokeh
  • plotly >= 4.8
  • altair
  • So, the 默认设置 is:

    pd.options.plotting.backend = 'matplotlib'
    

    你可以改变pandas使用的绘图库,如下所示。在这种情况下,它设置hvplot/ holoviews作为绘图的后端。

    pd.options.plotting.backend = 'hvplot'
    

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

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

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

    当然,你需要安装hvplot/holoviews库和依赖项,这样才能工作。

    下面是一个产生交互式绘图的代码例子。它使用了标准的.plot() pandas语法。

    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')
        
    是否也可以用plotly作为绘图的后端?
    Plotly backend is available with plotly >= 4.8.0
    jeffhale
    jeffhale
    发布于 2021-05-05
    0 人赞同

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

    以下是公告内容

    请注意,这些后端并没有完全与默认的matplotlib后端工作的所有参数保持一致。

    还要注意,Altair要求牵牛星_潘达斯安装了。

    我一直得到一个错误'Could not find plotting backend 'plotly'.确保你已经安装了提供'plotly'入口的软件包,或者该软件包有一个顶级的 .plot 方法。 我们是否应该在上述声明中不提及任何与df.plot(backend = 'plotly')有关的内容?
    @julianjoseph 听起来像是 pandas 在寻找 plotly 却没有找到。你是否安装了最新版本的 plotly 和最新版本的 pandas - 它们是你环境中的有效版本?你可以通过导入两个库并检查它们的 version 属性。 如果使用Jupyter并且最近升级或安装了软件包,你可以尝试重新启动你的内核。
    Sander van den Oord
    Sander van den Oord
    发布于 2021-05-05
    0 人赞同

    要改变pandas绘图的后端 for the whole session , use:

    pd.options.plotting.backend = 'plotly'
    

    要改变pandas绘图的后端only 对于一个特定的情节, 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