Plotly express 与 Altair/Vega-Lite 的交互式绘图

最近我正在学习Plotly expressAltair/Vega-Lite的交互式绘图。他们俩都令人印象深刻,我想知道他们的优点和缺点是什么。特别是对于创建交互式情节,它们之间有什么大的区别,什么时候比另一个更合适?



暮色呼如
浏览 242回答 1
1回答

拉风的咖菲猫

尽量不涉及个人喜好和太多细节,据我所知,以下是两者之间的一些主要相似之处和不同之处。设计原则Plotly express 和 Altair 都是高级声明性库,这意味着您可以根据数据和关系(例如 seaborn、holoviews 和 ggplot)而不是较低级别的绘图机制(例如 matplotlib 和 bokeh)来表达自己。这需要更少的输入,让您专注于数据,但您对绘图中的确切细节的控制也较少。两者都是基于底层 javascript 库的交互式绘图包。Plotly express 位于 plotly.py 之上,它是 plotly.js 的 Python 包装器,而 Altair 是 VegaLite.js 的包装器,而 VegaLite.js 又基于 Vega.js。plotly.js 和 Vega 都基于 D3 可视化库,这是标准的 js viz 库。句法更根本的区别之一是语法。Plotly 的语法更侧重于为每个绘图设置单独的函数,然后该函数需要几个参数来控制其行为。例如,violinplot 函数有一个参数,用于判断是否应该包含带状图。Altair 专注于拥有图形语法,您可以从单个图形语法单元组成图表,就像您从单词组成句子一样。例如,如果我想在 Altair 中组合两个图表,我会单独创建它们并通过图层运算符将它们添加在一起(这也可以在 Plotly 中进行扩展,但使用 Plotly express 并不总是那么简单)。所以 Altair 的语法原则与 ggplot 非常相似,而 Plotly express 在语法上更(但不完全)像 seaborn。互动性两者都非常有能力,并且可以创建通过交互链接在一起的绘图的多面板布局,例如更新其他绘图的过滤或悬停事件。核心库本身的所有交互性都是客户端的(发生在您的浏览器中,并且在将笔记本导出为 HTML 时仍然存在)。服务器端交互性(需要运行 Python 服务器)可以通过与外部仪表板解决方案配对来实现,该解决方案允许您触发自定义函数以在绘图中的选定点上执行。对于 Plotly,这是他们自己的解决方案 Dash,对于 Altair,这最近已添加到 Panel 仪表板库中(将来可能会为 Streamlit 实现)。Altair 是我所知道的唯一一个具有交互语法的可视化包,它允许您根据与通过图形语法创建绘图时相似的原理来组合小部件和绘图之间的交互。这使得创建情节的体验保持一致,并且可以在设计交互时提高创造力和灵活性。Plotly 以直观的方式支持动画,如果您的数据是时间序列或类似的,这可能会很棒。外貌请查看Altair和Plotly express画廊,以确定您喜欢哪种美学。许多默认值(背景颜色、标记大小、轴号等)当然是可以更改的(单独或通过主题),但是您仍然可以通过花时间在画廊中了解您的绘图的外观。一个显着的区别是 Altair 将保持绘图元素和间距不变,同时调整绘图大小以适应更多类别条目,而 Plotly 将修改绘图中元素的间距和大小以适应整体绘图大小。对于多面子图,Altair 将保持每个子图的大小不变,并随着添加的更多而扩大图表的总大小,而 Plotly 将使子图适合图的整体大小,并随着添加的更多而使每个图变小。您可以调整这两个库以创建所需大小的图,但这就是它们开箱即用的行为方式。附加功能Plotly 目前支持更多类型的图表,并具有一些针对例如生物图和图像分析的特殊功能。对于某些类型的绘图,Plotly 可以使用 WebGL 加速性能,而Altair 的性能可以使用 VegaFusion 进行扩展。两者都可以在某种程度上与 Datashader 一起使用,但不如与 Bokeh/Holoviews 一起使用时那样无缝。Plotly 是由一家为其某些产品提供企业支持的公司创建的。Vegalite 是由开发 D3 的同一研究小组开发的。两者都是开源的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python