Python Dashboarding Giants的战斗:Streamlit Vs. Dash与Voilà与voilàvs.面板

2021-04-17 20:25:58

对于本文讨论的浓缩图形表示,跳到底部的比较矩阵。

在过去的五个月里,我一直在探索和批判性地检查Python仪表板生态系统中的领先框架。本空间的当前行业领导者流利,绘图划线,Voilà和面板。因此,我选择完全关注这四个仪表板框架的研究,因为我希望深入了解行业领导者,而不是可提供的仪表板框架的广度。

由于没有存在用于审查和比较仪表板框架的固化标准,我必须创建自己的比较标准,这在选择一个特定的仪表板框架的上下文中是一个感觉的。对于那些来自我以前的文章的人来说,请注意,我略微修改了我在最初的4部分系列中使用的比较标准 - 这是单独查看每个框架的。包括在此原始的4部分系列中使用的一些标题,以提供每个框架的背景的背景,以及提供使用每个框架开始的信息可能需要的信息。这些标题在直接比较的范围内不再相关,因此,它们已被排除在此比较文章之外。

新的更精简的标准可以在上面的内容表中找到,并且将在这些标准下进行审查的四个框架中的每一个。为了我的比较,我已经更有洞察力和现实,我已经将自己暴露于每个月份的每个框架,并创建了使用四个框架中的每一个的共享示例仪表板应用程序。这让我能够对每个技术感受到一手,体验他们的优缺点。

本文的目的不是在原来的4篇文章中讨论的一切,而是简要比较一个地方的这些文章的内容问题。要查看Streamlit,Plotly Dash,Voilà,&amp的原始文章;面板,单击提供的链接。

StreamLit:将Python脚本转换为可共享的交互式仪表板应用程序,尽快。破折号:关闭数据科学与组织其他部分之间的差距。 Voilà:将Jupyter / IPython笔记本电脑转换为独立交互式Web的仪表板应用程序,从数据分析的探索阶段开始平滑过渡到所产生的数据洞察的通信。面板:创建一个灵活的框架,用于制作未绑定特定GUI的仪表板应用程序,该代码在Python脚本文件和jupyter / ipython笔记本中运用的代码。

StreamLit:所有主要Python绘图库,包括Matplotlib的Pyplot库,海运,Altair,Vega-Lite,Plotly,Bokeh,Pydeck和GraphViz。还提供自己的本机绘图库,具有线条图,区域图表,条形图和地图。 Dash:主要用于与“Plotly.py”Python图形库一起使用。替代绘图库存在外部库 - 即海运/ Matplotlib,Altair / Vega-Lite和Bokeh - 在短划线内,但这些库不是非常稳健的,而输出图的交互水平与绘图的相互作用 - 产生的图表。 Voilà:所有主要的Python绘图库,包括Matplotlib的Pyplot库,海运,Altair,Plotly,Bokeh,Pydeck和GraphViz。面板:所有主要Python绘图库 - Matplotlib,海运,Altair,Plotly,Bokeh,Pydeck,GraphViz,甚至是R'GGPLOT'库。

Streamlit:未明确或开箱即用,但可以在Streamlit支持论坛上找到潜在的解决方法。 Dash:显式支持多页应用程序。 Voilà:没有明确或开箱即用,潜在的解决方法没有真正类似于多页的应用程序。面板:明确支持多页应用程序,可以以多种不同的方式执行 - 例如使用选项卡,管道和模板。面板可以在应用程序页面之间共享状态,从而导致创建复杂的多页应用程序。

最好的:面板或短划线。面板非常适合多页应用,因为它可以在多页之间轻松共享信息,以便您可以构建全功能的多页应用。 Dash以比其他框架更表情的方式支持多页应用程序,能够更改URL而无需刷新实际的网页本身 - 导致高度减少的页面加载时间 - 但是,需要明确地完成页面之间的变量的共享,这可能会在创建频繁地共享大量信息的应用程序时妨碍现实世界的适用性。最糟糕的:voilà。没有明确的支持,解决方法并不像多页应用程序。

Streamlit:目前完全开源,但是,Beta中有一个企业版本,名为“Streamlit for Teams”。 Dash:开源框架,以及具有许多其他功能的企业版本。 Voilà:完全开源。面板:完全开源。

StreamLit:要从Streamlit中获取完整的实用程序,而不需要其他先决条件技能。 HTML,CSS和Javascript可以支持您对框架的使用 - 导致更复杂和视觉上吸引人的应用程序布局。短划线:您需要对HTML的初步了解。 CSS知识将在您的应用程序设计决策中实现更大的控制。 Voilà:没有明确需要其他技能栏Python,但是,如果您希望完全设计控制仪表板的布局和外观,则需要一些HTML,CSS和Jinja的知识。面板:没有Python以外的技能必须使用面板开始。 HTML,CSS和JavaScript知识将有助于开发过程,特别是在涉及风格选择时。

最好的:Streamlit。来自纯Python背景,Streamlit将为您处理大部分设计决策,如果您需要学习任何HTML或CSS。最糟糕的是:短暂的,略微。我只选择在这里选择仪表点,因为我觉得你可以在不知道其他3框架的任何HTML或CSS的情况下,但是用破折号,你需要了解HTML来正确地铺设你的应用程序并知道什么组件是什么。

Streamlit:Streamlit的API是最小的,易于管理,用纯Python写入,可以在单个坐姿中整体读取。这是一个非常容易使用的框架。短划线:易于使用来创建基本仪表板应用程序,但创建复杂的应用程序布局稍微难以更加困难。 Voilà:voilà本身非常易于使用,以创建一个基本的仪表板应用程序,但是,控制有关应用程序布局和外观的复杂性并不总是直接的。面板:易于使用直接的数据仪表板应用程序,但一旦您经过更长的简化仪表板接口,它就会非常棘手。

最好的:Streamlit。该框架是在优先级列表中的易于使用高度使用的框架,如果不是在顶部。使用Streamlit创建仪表板应用程序非常容易!最糟糕的:面板。甚至需要大量的阅读和实验,甚至可以使用面板创建最基本的仪表板。在说,在这些初始小时内完成后,它确实变得更容易 - 但它仍然是四个框架最令人复杂的。

Warning: Can only detect less than 5000 characters

Streamlit:代码维护获得简单。他们还保持清晰简洁的变更日志,用于监测新添加和最近已弃用的功能。短划线:相对容易。取决于自从您上次使用Dash进行编程以来的时间,您可能需要在能够继续开发您的应用程序之前将自己与代码结构重新烹制。他们还保持清晰简洁的变更日志,用于监测新添加和最近已弃用的功能。 Voilà:框架不包含任何特定于Voil的代码元素,意味着维护很简单,因为它仅仅是维护Python代码。面板:您的应用程序维护的更容易将取决于您最初用于创建应用程序的API,其中诸如更容易维护的基本API,例如回调API。他们还保持清晰简洁的变更日志,用于监测新添加和最近已弃用的功能。

Streamlit:截至2021年2月,谷歌&堆栈溢出搜索“Streamlit”返回241,000和485个结果。破折号:截至2021年2月,谷歌&堆栈溢出搜索'Plotly Dash'返回905,000和500结果。 Voilà:截至2021年2月,谷歌&堆栈溢出搜索'Voila仪表板'返回1,009,000和75个结果。小组:截至2021年2月,谷歌&堆栈溢出搜索“Holoviz面板”返回6,650和45结果。

StreamLit:不支持聊天或电子邮件。活动用户支持论坛。 Streamlit GitHub存储库的问题部分有940个已关闭问题和540个公开问题。 (2月2021)Dash:不支持聊天或电子邮件。活动用户支持论坛。 Dash GitHub存储库的问题部分有558个已关闭问题和392个开放问题。 Voilà:没有支持聊天或电子邮件。没有特定的支持论坛。在大jupyter社区论坛上处理问题。 VoilàGitHub存储库的问题部分有269个已关闭问题,172个开放问题。面板:无支持聊天或电子邮件。相对活跃的用户支持论坛。面板GitHub存储库的问题部分有664个已关闭问题和316个公开问题。

Streamlit:12.7k星星,1.1k叉和80个贡献者。 Dash:13.8K星,1.4K叉,61个贡献者。 Voilà:3K星,〜290叉和43个贡献者。小组:〜950星,〜150叉和60名贡献者。

Streamlit:如果您拥有已有现有的Python代码库,那么可观的框架非常适合您希望尽可能快速地且无痛地进入交互式仪表板。它最容易使用四个框架。 Dash:如果您正在寻找企业级的单框架 - 适合 - 所有解决方案,或者如果您对Web开发的基本了解,则为Dash是最佳选择。 Voilà:要在您拥有带有一些数据分析的jupyter / ipython笔记本的情况下使用,并且您希望与同事分享数据洞察,而没有代码单元对视图混淆。 Voilà也是一个很好的工具,可以在组织中快速和可靠地报告数据洞察力。面板:创建不限于单个GUI的仪表板应用程序。当您的数据大多是地理空间时,面板是一个不错的选择。作为Panel是Holoviz生态系统的一部分,它与GeoViews Python库完美无瑕地处理了用于处理地理空间数据。面板比划线,流动率或voilà更好地处理这种形式的数据。

最后,通过关键镜头探讨了这四个Python仪表板框架,近半年,我会说他们都有它们的优点,而你选择的框架不应该依赖选择绝对的“最好”,而是选择最适合您项目规格的框架以及您想要实现的框架。

我会留下一个比较矩阵,它蒸煮了我在最后几个月内学到的一切都在一个图表中。

我希望你能享受这个5件系列,一如既往,如果你喜欢这篇文章,请随时给予拍手和分享。 您对这些领先的Python Dashboard框架的经历如何? 您是否遇到过的问题或功能在本文中没有触及? 让我知道! 虽然本文的每个方面都经过彻底研究,但由于本文内容的范围和这些较新的仪表板框架的常见性质,某些方面可能是不正确的或已经过时。 我已经检查了本文中每个句子的真实性,但是,我可能会犯错误。 如果您注意到任何不准确性,请在以下注释它们或在LinkedIn上留言,以便我可以纠正它们。 谢谢!