一、Altair簡介
Altair是Python中的數據可視化和探索庫,被稱為Python中最簡單、最快速的數據可視化庫之一,它允許使用基於Python的聲明性語法輕鬆地繪製優美和互動的圖形。Altair的繪圖語法基於Vega-Lite,一種用於描述交互式圖形的語言,它以JSON為基礎,同時具有易讀性和高可擴展性。通過在Python中使用Altair庫,我們可以快速創建出高度定製的圖形,使數據更具有可解釋性,且更具理解性。
import altair as alt
from vega_datasets import data
cars = data.cars()
alt.Chart(cars).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon',
color='Origin',
)
二、可組裝的繪圖單元
一般來說,我們需要創建多個在圖表中使用的元素,如點、線、柱狀圖等。Altair提供了多種可組裝的繪圖單元,使我們可以輕鬆構建高質量的繪圖。在下面的示例中,我們將數據集中“Wage”列的直方圖可視化,使用“Sex”變量進行顏色編碼和標記化的繪圖單元,可視化出男女工資的分布。
# 導入數據集
from vega_datasets import data
cars = data.cars()
import altair as alt
# 創建直方圖的通道
bars = alt.Chart(cars).mark_bar(
cornerRadiusTopLeft=3,
cornerRadiusTopRight=3
).encode(
alt.X("Horsepower:Q", bin=alt.Bin(maxbins=20)),
alt.Y("count()", title=None),
)
# 創建人口金字塔的通道
source = cars
census = alt.Chart(source).transform_aggregate(
age_count='count()', groupby=['age', 'sex']
).transform_calculate(
sex=alt.expr.if_(alt.datum.sex == 1, 'Male', 'Female')
).transform_filter(
(alt.datum.age >= 0) & (alt.datum.age < 100)
)
bars = alt.Chart(source).mark_bar().encode(
alt.X('age:O', scale=alt.Scale(rangeStep=17)),
alt.Y('sum(age_count):Q', axis=None),
alt.Color('sex:N', scale=alt.Scale(range=["#EA98D2", "#659CCA"])),
order=alt.Order(
# Sort the segments of the bars by this field
'age:O',
sort='ascending'
)
).properties(
width=350,
height=400
)
alt.vconcat(bars)
三、數據交互
交互性是數據可視化的重要組成部分,它允許用戶根據自己的需求和興趣進行探索和分析數據。Altair庫提供了多個交互特性,如縮放、滾動,層疊以及過濾等。下面的示例,演示了如何將折線圖和縮放交互結合使用,使您可以選擇感興趣的時間段並放大觀察。
# 導入數據集
import pandas as pd
import altair as alt
data = pd.read_csv('https://raw.githubusercontent.com/vega/vega-datasets/master/data/gapminder-health-income.csv')
# 定義可視化圖形的交互性
selection = alt.selection_multi(fields=['country'])
alt.Chart(data).mark_line().encode(
x='year',
y='life_expectancy',
color='country'
).transform_filter(
selection
).properties(
selection=selection,
width=700,
height=400,
).interactive()
四、數據轉換
在數據可視化中,我們經常需要將數據結構轉換為適合於特定類型的繪圖的格式。例如,將時間序列數據轉換為折線圖形式數據。Altair提供了多種數據轉換和過濾機制,如聚合、堆疊和排序等。在下面的示例中,我們將1978年到1982年的美國公共汽車旅行速度數據集轉換為堆疊的區域圖。
# 導入數據集
import pandas as pd
import altair as alt
data = pd.read_json('https://vega.github.io/vega-lite/examples/film_festivals.json')
alt.Chart(data).mark_bar().encode(
x='count()',
y=alt.Y('country', sort='-x')
)
五、總結
Altair是一款靈活、高效的數據可視化和探索工具,它使用與人類語言相似的聲明性語法,可輕鬆地創建複雜、互動的繪圖效果。它不僅支持常見的二維和三維圖形,還支持交互特性、數據轉換和過濾機制。這些功能使得數據分析人員不僅可以更好地理解數據,同時還可以快速分析和發現數據中的模式和趨勢。
原創文章,作者:ZUVYH,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/333144.html