神奇的holoviews

长期以来,一直在寻找具有交互功能的python可视化工具。

使用过很多可视化工具,其中 plotlyipywidgetspyecharts 同时满足交互性,又具有一定美感,但:

  • plotly对网络依赖很大
  • pyecharts在断网环境下无法正常显示(空白)
  • ipywidgets可以和matplotlib组合生成交互图,可是书写没那么方便

然而 holoviews完全没有上面的问题,且操作简洁。

一、超快捷构建交互

支持根据数据的分类信息,自动生成可交互的选择框,如果不需要选择框,可以通过overlay()处理。

# 完整代码:http://holoviews.org/gallery/demos/bokeh/dropdown_economic.html#bokeh-gallery-dropdown-economic
macro = hv.Table(macro_df, key_dimensions, value_dimensions)
gdp_curves = macro.to.curve('Year', 'GDP Growth')
神奇的holoviews_第1张图片

二、opts配置:瞬间变美

使用opts配置,快速提升图片颜值。

# 完整代码:http://holoviews.org/gallery/demos/bokeh/boxplot_chart.html#bokeh-gallery-boxplot-chart
# 快速生产线框图
boxwhisker = hv.BoxWhisker(df, ['cyl', 'origin'], 'mpg', label=title)
# opts美化:加个颜色,调整大小,瞬间不一样
boxwhisker.opts(show_legend=False, width=600, box_fill_color=dim('origin').str(), cmap='Set1')
神奇的holoviews_第2张图片

三、加号和乘号

在holoviews中使用加号完成图片并排,使用*完成图片叠加;比其他工具要方便快捷很多。

例如以下python、pypy、jython为三个曲线图,使用*完成图片的叠加

# 完整代码:http://holoviews.org/gallery/demos/bokeh/area_chart.html#bokeh-gallery-area-chart
python = hv.Area(python, label='python', **dims)
pypy   = hv.Area(pypy,   label='pypy',   **dims)
jython = hv.Area(jython, label='jython', **dims)
overlay = (python * pypy * jython)
overlay
神奇的holoviews_第3张图片

且该图片支持动态交互,可以点击legend选择显示内容。

四、tools=['hover']

opts配置时,使用tools=['hover']可以实现鼠标点到目标位置时显示标签。

# 完整代码:http://holoviews.org/gallery/demos/bokeh/choropleth_data_link.html#bokeh-gallery-choropleth-data-link
(choropleth + table).opts(
    opts.Table(height=428),
    opts.Polygons(width=500, height=500,  tools=['hover', 'tap'], xaxis=None, 
                  yaxis=None, color_index='Unemployment'))
神奇的holoviews_第4张图片

小结

发现现阶段对于holoviews的使用并没有那么多,官网资料比较全面。

但holoviews其强大的交互能力、简洁的代码需求极大的满足了个人需求。

参考资料

holoviews gallery:http://holoviews.org/gallery/index.html
holoviews demos:https://github.com/pyviz/holoviews/tree/master/examples/gallery/demos/bokeh

你可能感兴趣的:(神奇的holoviews)