Plotly express与Altair/VegaLite的交互绘图对比

2024-03-29 11:25:19 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我正在学习交互式绘图的Plotly expressAltair/Vega-Lite。他们两人都给人留下了深刻的印象,我想知道他们的长处和短处是什么。特别是在创造互动情节时,它们之间有什么大的区别吗?什么时候一个比另一个更合适


Tags: 绘图liteplotlyvegaexpress情节区别印象
1条回答
网友
1楼 · 发布于 2024-03-29 11:25:19

尽量不涉及个人偏好和太多细节,以下是我所知的两者之间的一些主要相似之处和差异

设计原则

Plotly express和Altair都是高级声明性库,这意味着您可以用数据和关系(如seaborn、holoviews和ggplot)来表达自己,而不是用低级绘图机制(如matplotlib和bokeh)来表达自己。这需要更少的输入,让您的注意力集中在数据上,但您也无法控制绘图中的确切细节

两者都是基于底层javascript库的交互式绘图包。Plotly express位于Plotly.py之上,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中并不总是简单)。所以Altairs的语法原则与ggplot非常相似,而Plotly express在语法上更像(但不是很像)seaborn

互动性

两者都非常强大,可以创建通过交互链接在一起的绘图的多面板布局,例如更新其他绘图的过滤或悬停事件。目前,Altair中的所有交互都是客户端(发生在浏览器中,在将笔记本导出为HTML时仍然存在),其中as Plotly同时具有客户端和服务器端交互(需要运行的Python服务器)。因此,如果您正在使用Plotly的仪表板解决方案Dash,则可以触发自定义函数以执行Plotly绘图中的选择,而在Altair中,您只能使用此选择更新其他Altair绘图Server side interactivity for Altair might be implemented for the dashboarding package streamlit in the future

Altair是我所知道的唯一一个具有交互语法的可视化软件包,它允许您根据与通过图形语法创建绘图时类似的原则在小部件和绘图之间构建交互,这既能提供一致的体验,又能在设计交互时增加创造力和灵活性。Plotly以直观的方式支持动画,如果您的数据是时间序列或类似数据,这将是一个很好的选择

外表

请查看AltairPlotly express画廊,以决定您喜欢哪种美学。许多默认设置(背景色、标记大小、轴号等)当然是可变的(单独或通过主题),但您仍然可以通过在图库中花费时间大致了解绘图的外观

一个显著的区别是,Altair将保持绘图元素和间距不变,同时调整绘图大小以适应更多分类条目,而Plotly将修改绘图中元素的间距和大小以适应总体绘图大小。对于多面子图,Altair将保持每个子图的恒定大小,并在添加更多子图时扩展图表的总大小,而Plotly将使子图与绘图的总体大小相适应,并在添加更多子图时使每个绘图变小。您可以调整这两个库以创建所需大小的绘图,但这是它们开箱即用的行为方式

额外费用

图电流y支持更多类型的图形,并具有一些针对生物绘图和图像分析的特殊功能。Plotly可以通过WebGL和datashader提高某些类型绘图的性能,而Vega的可扩展性能仍在开发中。Plotly由一家为其部分产品提供企业支持的公司创建。Vegalite由开发D3的同一研究小组开发。两者都是开源的

相关问题 更多 >