Lets-Plot-Kotlin

kotliner發表於2020-12-21

儘管我們可以從指標,檢測和基本統計中瞭解有關資料的更多資訊。但作為人類,當我們親眼看到趨勢和圖案時,我們會更快去理解它。如果你希望只需一小會便能讓資料視覺化,但不知道如通過Kotlin操作,則這篇博文非常適合你!

今天,我想與你聊聊Kotlin的Lets-Plot,這是一個完全通過Kotlin編寫的開源資料統計圖形繪製庫。你將瞭解到它的API,可以用它構建的圖表種類以及這個庫獨特的地方。讓我們從API開始吧。

類ggplot的API

Lets Plot Kotlin API是基於分層影像原則構建的。如果你曾經在R語言上使用過ggplot2包,你可能會g感到熟悉。

“這種語法[…]是由一組獨立的元件通過很多種不同方式構成的。這使得[它]非常強大,因為不侷限於預先定義好的圖形,而是可以根據需求準確定製新的圖形。”Hadley Wickham, ggplot2: Elegant Graphics for Data Analysis

如果你之前使用過ggplot2,應該認得這種樣式的API:

Lets-Plot

如果不清楚,則在這裡讓我們瞭解究竟發生了什麼吧。在Lets-Plot中,一個plot至少由一個圖層表示。圖層負責繪製在”canvas”上的物件,幷包含以下元素:

  • 資料——所有圖層共用或逐層指定的資料子集。一個plot可以合併多個不同的資料集(每層一個)。
  • 美學對映——描述如何將資料集的變數對映到圖層的可視屬性上,例如顏色,形狀,大小或位置。
  • 幾何物件——代表特定型別圖表的幾何物件。
  • 統計轉換——對原始輸入的資料計算某種統計摘要。例如,bin統計量用於直方圖,smooth用於迴歸線。
  • 位置調整——一種用於計算幾何最終座標的方法。用於構建同一幾何物件的變體或避免過度繪圖。

要將所有這些部分組合在一起,你需要使用下述的簡易公式:

你可以通過閱讀入門指南來了解有關Lets-Plot基礎的更多資訊,並更好地瞭解各個構建塊的功能。

自定義plots

開箱即用的Lets-Plot支援多種視覺化型別——直方圖,箱形圖,散佈圖,線圖,輪廓圖,地圖等等!

所有plot都是靈活的且可高度定製的,但是庫在強大的可定製型和易用性之間設法保持平衡。 你可以從簡單但有用的視覺化開始,例如資料分發:

Histogram plot

你擁有建立複雜但細緻的視覺化所需的全部工具,例如此圖,展示了Iris資料集圖表的自定義提示資訊:

Customisable tooltips

檢視這些教程,瀏覽可用的Lets-Plot視覺化效果,並學習如何使用:

與Jupyter Notebook的Kotlin核心整合

你可能已經從截圖中注意到,這些繪圖是在Jupyter Notebook中建立的。 實際上,Lets-Plot與Jutter Notebook的Kotlin核心整合到一起了。 如果你已安裝Kotlin核心(請參閱有關操作方法的說明),要開始繪圖則僅僅只需在notebook中加入下列像魔法一樣的程式碼行:

僅此而已! Plot 速現 ? Kotlin noteboks還被JetBrains Datalore的支援,JetBrains Datalore是具有智慧編碼提示的線上資料科學筆記。 瞭解使用Lets-Plot的Datalore notebook示例吧。

Lets-Plot的內在

最後,我想與大家分享一下Lets-Plot的實現,因為它是獨一無二的多平臺庫。 由於Kotlin獨特的多平臺性質,因此繪圖功能只需在Kotlin中一次編寫,便可打包為JavaScript庫,JVM庫和native Python擴充套件

Lets-Plot Internals

無論你鍾愛哪種環境,都可以通過Lets-Plot使用相同的功能和API讓資料視覺化!

Kotlin API構建在JVM jar之上,但是,你也可以獨立使用JVM jar。 例如,你可以通過JavaFX或Apache Batik SVG工具包將plot嵌入到JVM應用程式中實現圖形渲染。

Lets-Plot確實是Kotlin多平臺潛力的絕佳體現,並且是滿足你資料視覺化需求的出色工具。 希望這篇文章能激發你的興趣,同時嘗試一下!