Skip to main content
 首页 » 编程设计

python之bokeh.charts 不见了——什么库可以做交互式的、彩色的散点图

2025年05月04日21mfrbuaa

我发现自己最常做的可视化之一如下:我有 x,y 数据,按类别标记。我需要在散点图中绘制它,根据标签自动为点着色,并生成图例。 可视化应该是交互式的(可缩放、悬停在点上显示元数据等...)

这是我正在寻找的完美示例 - 现在已弃用的 bokeh.charts library 中存在的东西:

我知道我可以通过 seaborn 以非交互方式执行此操作:

fig = sns.lmplot(x="Length", y="Boot", hue="class", fit_reg=False, data=df) 

我可以使用 Bokeh 进行交互式绘图,但只能在低级别上进行,没有颜色或图例:

p = Scatter(df, x="Length", y="Boot", plot_width=800, plot_height=600,  
    tooltips=TOOLTIPS, title="Cars") 

我也知道存在各种解决方法,手动定义调色板,例如 this one .然而,对于曾经是一个简单的单行代码(在 R 中仍然如此)的东西来说,这是非常复杂的。替代品 Holoview 似乎不支持散点图中的着色:Source

那么,对于在 oneliner 中支持这种开箱即用的 Python 包,而不是在低级别的基础上手动编写此代码,有什么建议吗?

请您参考如下方法:

HoloViews库是 bokeh 图表 API 的一个很好的替代品。然而,由于习惯于命令式绘图 API 的人对该 API 相当陌生,我们最近发布了一个名为 hvPlot 的新库。 ,它试图非常接近地反射(reflect) pandas 绘图 API,同时提供 bokeh 提供的交互性以及 HoloViews 的一些更高级的功能(例如自动分面、小部件和数据着色器集成)。要从上面重新创建情节,您可以这样做:

import bokeh.sampledata.autompg as mpg 
import hvplot.pandas  # adds hvplot method to pandas objects 
 
myPlot = mpg.autompg.hvplot.scatter( 
        x='displ', y='hp', by='cyl', 
        fields={'hp': 'Horsepower', 'displ': 'Displacement'}, 
        title='HP vs. DISPL (shaded by CYL)' 
) 
hvplot.show(myPlot) # view the plot in a browser (hvplot doesn't support modal dialogs) 

请注意,在下一个版本中,您将能够用更明确的 xlabel 和 ylabel 参数替换 fields 参数。