我发现自己最常做的可视化之一如下:我有 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 参数。
