1 回答

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
盡量不涉及個(gè)人喜好和太多細(xì)節(jié),據(jù)我所知,以下是兩者之間的一些主要相似之處和不同之處。
設(shè)計(jì)原則
Plotly express 和 Altair 都是高級(jí)聲明性庫(kù),這意味著您可以根據(jù)數(shù)據(jù)和關(guān)系(例如 seaborn、holoviews 和 ggplot)而不是較低級(jí)別的繪圖機(jī)制(例如 matplotlib 和 bokeh)來(lái)表達(dá)自己。這需要更少的輸入,讓您專注于數(shù)據(jù),但您對(duì)繪圖中的確切細(xì)節(jié)的控制也較少。
兩者都是基于底層 javascript 庫(kù)的交互式繪圖包。Plotly express 位于 plotly.py 之上,它是 plotly.js 的 Python 包裝器,而 Altair 是 VegaLite.js 的包裝器,而 VegaLite.js 又基于 Vega.js。plotly.js 和 Vega 都基于 D3 可視化庫(kù),這是標(biāo)準(zhǔn)的 js viz 庫(kù)。
句法
更根本的區(qū)別之一是語(yǔ)法。Plotly 的語(yǔ)法更側(cè)重于為每個(gè)繪圖設(shè)置單獨(dú)的函數(shù),然后該函數(shù)需要幾個(gè)參數(shù)來(lái)控制其行為。例如,violinplot 函數(shù)有一個(gè)參數(shù),用于判斷是否應(yīng)該包含帶狀圖。Altair 專注于擁有圖形語(yǔ)法,您可以從單個(gè)圖形語(yǔ)法單元組成圖表,就像您從單詞組成句子一樣。例如,如果我想在 Altair 中組合兩個(gè)圖表,我會(huì)單獨(dú)創(chuàng)建它們并通過(guò)圖層運(yùn)算符將它們添加在一起(這也可以在 Plotly 中進(jìn)行擴(kuò)展,但使用 Plotly express 并不總是那么簡(jiǎn)單)。所以 Altair 的語(yǔ)法原則與 ggplot 非常相似,而 Plotly express 在語(yǔ)法上更(但不完全)像 seaborn。
互動(dòng)性
兩者都非常有能力,并且可以創(chuàng)建通過(guò)交互鏈接在一起的繪圖的多面板布局,例如更新其他繪圖的過(guò)濾或懸停事件。核心庫(kù)本身的所有交互性都是客戶端的(發(fā)生在您的瀏覽器中,并且在將筆記本導(dǎo)出為 HTML 時(shí)仍然存在)。服務(wù)器端交互性(需要運(yùn)行 Python 服務(wù)器)可以通過(guò)與外部?jī)x表板解決方案配對(duì)來(lái)實(shí)現(xiàn),該解決方案允許您觸發(fā)自定義函數(shù)以在繪圖中的選定點(diǎn)上執(zhí)行。對(duì)于 Plotly,這是他們自己的解決方案 Dash,對(duì)于 Altair,這最近已添加到 Panel 儀表板庫(kù)中(將來(lái)可能會(huì)為 Streamlit 實(shí)現(xiàn))。
Altair 是我所知道的唯一一個(gè)具有交互語(yǔ)法的可視化包,它允許您根據(jù)與通過(guò)圖形語(yǔ)法創(chuàng)建繪圖時(shí)相似的原理來(lái)組合小部件和繪圖之間的交互。這使得創(chuàng)建情節(jié)的體驗(yàn)保持一致,并且可以在設(shè)計(jì)交互時(shí)提高創(chuàng)造力和靈活性。Plotly 以直觀的方式支持動(dòng)畫,如果您的數(shù)據(jù)是時(shí)間序列或類似的,這可能會(huì)很棒。
外貌
請(qǐng)查看Altair和Plotly express畫廊,以確定您喜歡哪種美學(xué)。許多默認(rèn)值(背景顏色、標(biāo)記大小、軸號(hào)等)當(dāng)然是可以更改的(單獨(dú)或通過(guò)主題),但是您仍然可以通過(guò)花時(shí)間在畫廊中了解您的繪圖的外觀。
一個(gè)顯著的區(qū)別是 Altair 將保持繪圖元素和間距不變,同時(shí)調(diào)整繪圖大小以適應(yīng)更多類別條目,而 Plotly 將修改繪圖中元素的間距和大小以適應(yīng)整體繪圖大小。對(duì)于多面子圖,Altair 將保持每個(gè)子圖的大小不變,并隨著添加的更多而擴(kuò)大圖表的總大小,而 Plotly 將使子圖適合圖的整體大小,并隨著添加的更多而使每個(gè)圖變小。您可以調(diào)整這兩個(gè)庫(kù)以創(chuàng)建所需大小的圖,但這就是它們開箱即用的行為方式。
附加功能
Plotly 目前支持更多類型的圖表,并具有一些針對(duì)例如生物圖和圖像分析的特殊功能。對(duì)于某些類型的繪圖,Plotly 可以使用 WebGL 加速性能,而Altair 的性能可以使用 VegaFusion 進(jìn)行擴(kuò)展。兩者都可以在某種程度上與 Datashader 一起使用,但不如與 Bokeh/Holoviews 一起使用時(shí)那樣無(wú)縫。
Plotly 是由一家為其某些產(chǎn)品提供企業(yè)支持的公司創(chuàng)建的。Vegalite 是由開發(fā) D3 的同一研究小組開發(fā)的。兩者都是開源的。
添加回答
舉報(bào)