如何在Python中使用Altair繪製密度圖?


Altair是Python中的一種統計視覺化庫。該庫基於vega和vega-lite javascript庫。此外,我們可以在Python中以密度圖的形式視覺化資料分佈。無論我們需要比較不同組之間的變數分佈,還是需要視覺化分佈形狀,這些圖都非常有用。密度圖的有用應用,例如視覺化資料形狀、異常值檢測、比較分佈和模型選擇。本文藉助Python程式碼演示了密度圖。為了更好地理解,我們考慮以下示例,其中包含所有步驟。

示例1:使用Python中的Altair庫繪製密度圖。

查詢使用者的當前位置並在HTML頁面上顯示位置座標。

必要的步驟及程式碼解釋

步驟1:首先,匯入必要的庫

import altair as altr
import pandas as pd

步驟2:載入資料

在本例中,使用的是“titanic_data”,其中包含泰坦尼克號乘客的所有資訊。

步驟3:建立一個圖表物件

Chart = altr.chart(titanic_data)

步驟4:轉換資料。

使用‘transform_density’方法計算變數的密度估計。

步驟5:新增區域分界線。在建立區域圖時,我們使用‘mark_area’方法。

步驟6:使用‘encode’方法將需要繪製的所有變數編碼到x軸上。變數需要對映到x軸。

步驟7:使用‘encode’方法將需要繪製的密度編碼到y軸上。密度變數需要對映到y軸。

步驟8:使用‘encode’方法和scale引數對映顏色0和1,對圖中需要的顏色變數進行編碼。變數需要對映到圖的顏色。

步驟9:包含工具提示資訊,工具提示是一個彈出框,當用戶將滑鼠懸停在圖表或圖形上的資料點上時出現。

步驟10:設定圖表的屬性‘Properties’方法用於設定圖表的標題和大小。

步驟11:顯示圖表。為了顯示圖表,這裡使用了display方法。

使用Jupyter Notebook的Python示例程式碼

下面給出了經過測試的程式碼,它使用Python中的Altair生成泰坦尼克號旅客年齡分佈的密度圖,並按生存狀態分組。

示例

import altair as altr
import panda as pd 
titanic_data = pd.read_csv("https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv")
# Generate the density plot 
chart = altr.Chart(titanic_data).transform_density( 
             density='Age', 
             as_=['Age', 'density'], 
             groupby=['Survived'], 
             extent=[0, 100] 
).mark_area(orient='horizontal', opacity=0.5).encode(    
            x=altr.X('Age:Q', title='Age'), 
            y=altr.Y('density:Q', title='Density'), 
            color=altr.Color('Survived:N', scale=altr.Scale(domain=[0, 1], range=['red', 'blue']),   
           title='Survived'),
          tooltip=['Survived:N', 'Age:Q', 'density:Q']
 ).properties(title='Age Density Plot of Titanic Travellers', width=600, height=300) 
# Render the chart
 chart.display()
chart.show()

這裡將要描述的不同方法的主要功能已在此程式碼中使用。

‘transform_density’:這裡使用‘transform_density’方法來計算兩個變數(例如‘age’‘survived’變數)的密度估計。

transform_density接受幾個引數,例如:

  • ‘density’是我們可以計算密度估計的變數。這裡它是‘Age’

  • ‘as_’是一個包含兩個字串的列表,指定輸出變數名稱(Age,density)

  • ‘groupby’是一個包含兩個字串的列表,指定資料組 (‘Survived’)。

  • ‘extent’包含一個值列表,表示密度圖的值範圍。範圍是[0,100],換句話說,這個密度將計算0到100歲年齡段的年齡。

計算每個‘survived’值的‘Age’密度後,可以比較兩組年齡分佈的值,並觀察是否存在明顯的差異。最終生成的密度圖說明了x軸和y軸上兩組旅客的年齡值,以及單個旅客組的不同圖。

檢視結果 - 示例

要檢視結果,請在瀏覽器中開啟Vega編輯器。您可以看到泰坦尼克號旅客的密度圖。如果要了解特定位置的值,現在單擊特定位置,可以在彈出框中看到該值。

圖2 使用Python中的Altair庫繪製的泰坦尼克號旅客資料的密度圖

圖3 顯示泰坦尼克號旅客密度圖中特定點的值

在這篇關於Altair庫的文章中,我們使用泰坦尼克號旅客的線上資料繪製了密度圖。可以在Python中的密度圖中視覺化資料分佈。

更新於:2023年8月28日

244 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.