真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python中怎么利用Altair實(shí)現(xiàn)數(shù)據(jù)制圖

這篇文章給大家介紹Python中怎么利用Altair實(shí)現(xiàn)數(shù)據(jù)制圖,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),鶴山企業(yè)網(wǎng)站建設(shè),鶴山品牌網(wǎng)站建設(shè),網(wǎng)站定制,鶴山網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,鶴山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

繪圖流程

我通過繪制同一個多柱狀圖比較了多個 Python 繪圖庫的差異。正式開始之前,你需要將你的 Python 環(huán)境調(diào)整到能運(yùn)行下面代碼的狀態(tài)。具體就是:

  • 安裝最新版的 Python( Linux、Mac 和 Windows 系統(tǒng)下的安裝方法)

  • 確認(rèn)該版本 Python 可以運(yùn)行本教程所使用的庫

演示用數(shù)據(jù)可從網(wǎng)絡(luò)下載,并且可以用 pandas 直接導(dǎo)入:

import pandas as pddf = pd.read_csv('https://anvil.works/blog/img/plotting-in-python/uk-election-results.csv')

準(zhǔn)備開始吧。為了做個比較,先看下面這個用 Matplotlib 做的圖:

Python中怎么利用Altair實(shí)現(xiàn)數(shù)據(jù)制圖

Matplotlib UK election results

使用 Matplotlib 需要 16 行代碼,圖柱的位置需要自己計算。

使用 Altair 繪制相似的圖,代碼如下:

    import altair as alt     chart = alt.Chart(df).mark_bar().encode(        x='party',        y='seats',        column='year',        color='party',    )     chart.save('altair-elections.html')

真是簡潔多了!與 Seaborn 類似,Altair 所用數(shù)據(jù)的組織形式是每個變量一列(即 數(shù)據(jù)列 )。這種方式下可以將每個變量映射到圖的一個屬性上 —— Altair 稱之為“通道”。在上例中,我們期望每個 “黨派” 在 x 軸上顯示為一組圖柱, 其 “席位” 顯示在 y 軸,且將圖柱按照 “年份” 分開為 “列”。我們還想根據(jù) “黨派” 給圖柱使用不同的 “顏色”。用語言表述需求的話就是上面這個樣子,而這也正是代碼所要表述的!

現(xiàn)在把圖畫出來:

Python中怎么利用Altair實(shí)現(xiàn)數(shù)據(jù)制圖

Altair plot with default styling

調(diào)整樣式

這和我們期待的效果有點(diǎn)接近了。與 Matplotlib 方案相比,主要區(qū)別在于 Altair 方案中,每個 year 組顯示的時候,內(nèi)部之間都有個小空白 —— 這不是問題,這只是 Altair 多柱狀圖顯示的一個特性。

所以說呢,還需要對顯示樣式再做一些改進(jìn)。

非整形數(shù)據(jù)

兩個不是整數(shù)的年份名稱(Feb 1974 和 Oct 1974)顯示為 NaN 了。這可以通過將年份數(shù)值 year 轉(zhuǎn)換為字符串來解決:

    df['year'] = df['year'].astype(str)
指定數(shù)據(jù)排序方法

還需要讓 Altair 知道如何對數(shù)據(jù)進(jìn)行排序。Altair 允許通過傳給它一個 Column 對象,來設(shè)定 Column 通道的更多細(xì)節(jié)?,F(xiàn)在讓 Altair 按照數(shù)據(jù)在數(shù)據(jù)集中出現(xiàn)的順序排列:

    chart = alt.Chart(df).mark_bar().encode(        # ...        column=alt.Column('year', sort=list(df['year']), title=None),        # ...    )
移除坐標(biāo)軸標(biāo)簽

我們通過設(shè)置 title=None 移除了圖頂?shù)?"year" 標(biāo)簽。下面再一處每列數(shù)據(jù)的 "party" 標(biāo)簽:

    chart = alt.Chart(df).mark_bar().encode(        x=alt.X('party', title=None),        # ...    )
指定顏色圖

最后,我們還想自己指定圖柱的顏色。Altair 允許建立 domain 中數(shù)值與 range 中顏色的映射來實(shí)現(xiàn)所需功能,太貼心了:

    cmap = {        'Conservative': '#0343df',        'Labour': '#e50000',        'Liberal': '#ffff14',        'Others': '#929591',    }     chart = alt.Chart(df).mark_bar().encode(        # ...        color=alt.Color('party', scale=alt.Scale(domain=list(cmap.keys()), range=list(cmap.values())))    )
樣式調(diào)整后的最終代碼

應(yīng)用上述樣式調(diào)整之后,代碼看起來不那么悅目了,但我們?nèi)匀皇怯寐暶鞯姆绞綄?shí)現(xiàn)的,這正是 Altair 如此有彈性的原因所在。實(shí)現(xiàn)過程中,仍然是使用的異于顯示數(shù)據(jù)的獨(dú)立變量來分離圖中不同屬性的,而不是像在 Matplotlib 中那樣直接對顯示數(shù)據(jù)做復(fù)雜的操作。唯一的不同是,我們的變量名字封裝在類似 alt.X() 的對象中,從而實(shí)現(xiàn)對顯示效果的控制:

    import altair as alt    from votes import long as df     cmap = {        'Conservative': '#0343df',        'Labour': '#e50000',        'Liberal': '#ffff14',        'Others': '#929591',    }     df['year'] = df['year'].astype(str)     # We're still assigning, e.g. 'party' to x, but now we've wrapped it    # in alt.X in order to specify its styling    chart = alt.Chart(df).mark_bar().encode(        x=alt.X('party', title=None),        y='seats',        column=alt.Column('year', sort=list(df['year']), title=None),        color=alt.Color('party', scale=alt.Scale(domain=list(cmap.keys()), range=list(cmap.values())))    )     chart.save('altair-elections.html')

現(xiàn)在與 Matplotlib 方案扯平了,代碼數(shù)量達(dá)到了 16 行!

下圖是使用我們的樣式調(diào)整方案之后的 Altair 效果圖:

Python中怎么利用Altair實(shí)現(xiàn)數(shù)據(jù)制圖

關(guān)于Python中怎么利用Altair實(shí)現(xiàn)數(shù)據(jù)制圖就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


標(biāo)題名稱:Python中怎么利用Altair實(shí)現(xiàn)數(shù)據(jù)制圖
轉(zhuǎn)載源于:http://weahome.cn/article/popeci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部