(資料科學學習手札64)在jupyter notebook中利用kepler.gl進行空間資料視覺化

費弗裡發表於2019-07-06

一、簡介

  kepler.gl是由Uber開發的進行空間資料視覺化的開源工具,是Uber內部進行空間資料視覺化的預設工具,通過其面向Python開放的介面包keplergl,我們可以在jupyter notebook中通過書寫Python程式碼的方式傳入多種格式的資料,在其嵌入notebook的互動視窗中使用其內建的多種豐富的空間資料視覺化功能,本文就將針對在jupyter notebook中使用keplergl的基本用法進行介紹。

 

二、利用keplergl呼叫kepler.gl

2.1 從一個小例子開始

  首先我們需要在Python中安裝kepler.gl的Python介面包keplergl,只需要簡單的pip install keplergl即可,如果安裝過程中遇到與geopandas、fiona相關的錯誤,只需要重灌gdal模組即可,在完成安裝之後,通過下面的小例子來認識kepler.gl的使用方式:

from keplergl import KeplerGl

#建立一個KeplerGl物件
map1 = KeplerGl(height=500)
#啟用KeplerGl物件到jupyter的視窗中
map1

  在jupyter notebook中執行完上述程式碼後會出現kepler.gl的操作視窗,如下圖所示:

  點選左上角的小箭頭便可以展開一個功能豐富的窗體:

  第一個按鈕下包含了跟圖層元素相關的眾多功能,要使用這些功能需要匯入資料,利用add_data()方法傳入,它有兩個引數,data用於傳入包含要傳入圖層的所有資料資訊(具體的格式下一章節中會做具體介紹),name傳入字串型別的變數,用於給當前圖層命名,預設為'unnamed',下面我們以一個簡單的飛線圖的示例來初步認識利用kepler.gl進行視覺化的基本流程:

  使用到的資料是隨機生成的,除經緯度和地名外其它欄位真實之外其他欄位無意義,儲存在datatable.csv中,具體如下:

  在之前已經初始化的map1的基礎上,將資料表讀入並利用add_data()方法傳入作為圖層layer1:

import pandas as pd

df1 = pd.read_csv('datatable.csv',encoding='ANSI')
map1.add_data(df1,name='layer1')

  接著kepler.gl窗體便接收到響應轉變如下:

  skpler.gl會對csv格式的檔案的欄位型別進行推斷,一定要在代表經緯度資訊的欄位名稱中加上對應的lat、lng部分,否則匯入資料後並不能自動識別為可能的圖形物件,skpler.gl中主要用手動的方式來調整顯示哪些物件、以什麼格式顯示,通過一番簡單的手動調整我們得到下面的影象:

  要顯示什麼物件隱藏什麼物件可以全部依靠手動在選單欄中調整對應的屬性,也可以通過json格式傳入config引數來實現,我們提取上面視覺化結果下map1的config引數,再在初始化一個新的窗體時直接用字典傳入引數data為圖層layer1對應的df1,引數config為map1.config:

#直接在初始化的時候傳入對應圖層資料和map1的引數config
map2 = KeplerGl(height=700,data={'layer1':df1},config=map1.config)
map2

  可以看到通過這種方式我們直接一步就還原了之前完成的視覺化結果,通過本小節中這個簡單的小例子,你應該對jupyter notebook中如何呼叫kepler.gl有了一個初步的認識,接下來我們在不同的例子中總結傳入不同格式資料進行視覺化的方法。

 

2.2 繪製GeoJson型別檔案

  geojson檔案是kepler.gl中使用起來最方便的一種資料格式,因為它格式清楚,kepler.gl可以直接推理出需要執行的視覺化方案,下面這個例子使用到kepler.gl所屬的github下notebooks檔案下的geojson-data.json,這個geojson檔案記錄了位於巴黎的一個多邊形的向量資訊:

import keplergl
with open('geojson-data.json', 'r') as f:
    geojson = f.read()
map_1 = keplergl.KeplerGl(height=600,data={'geojson':geojson})
map_1

  skpler.gl直接繪製出我們需要的多邊形,,類似的你可以根據自己的需要創造出更多的視覺化作品,下面的幾個美觀的視覺化作品來自kepler.gl的官網:

  

 

  以上就是本文的全部內容,如有筆誤望指出!

 

相關文章