我常用的5個(gè)Python可視化庫

Python因?yàn)槠湔Z法簡單僻焚、膠水語言的特性锁右,誕生了很多好用的輪子(標(biāo)準(zhǔn)庫面哥、第三方庫),也因此讓Python一度成為了最熱門的編程語言(2023年1-10月 TIOBE編程語言排名第一)趴樱。

我用過很多Python庫馒闷,因?yàn)閿?shù)據(jù)分析展示的需要,經(jīng)常用一些可視化庫來設(shè)計(jì)圖表叁征,這些庫有不同的應(yīng)用場景纳账,生產(chǎn)力非常強(qiáng)大。

基礎(chǔ)可視化:Matplotlib捺疼、Seaborn疏虫、Altair

交互可視化:Bokeh、plotly

地圖可視化:Cartopy、Folium

Web可視化:Dash

BI可視化:Superset

流程圖可視化:PyGraphviz

下面詳細(xì)介紹下常見的5個(gè)可視化庫:Matplotlib卧秘、Seaborn呢袱、Altair、Bokeh翅敌、plotly

1. Matplotlib

Matplotlib不必多說羞福,它是最流行的Python可視化庫,可以繪制二維蚯涮、三維治专、動(dòng)態(tài)、交互等任何圖表遭顶,也是Seaborn等眾多可視化庫的底層依賴张峰。

學(xué)習(xí)文檔:https://matplotlib.org/

Matplotlib的特點(diǎn)是圖表功能齊全,可定制化強(qiáng)液肌,一般專業(yè)的新聞圖表挟炬、科研圖表鸥滨、出版圖表嗦哆、企業(yè)圖表都可以用Matplotlib繪制。

唯一的缺點(diǎn)是高級(jí)封裝不多婿滓,繪圖代碼稍顯復(fù)雜老速。

import matplotlib.pyplot as plt

data = {'apple': 10, 'orange': 15, 'lemon': 5, 'lime': 20}
names = list(data.keys())
values = list(data.values())

fig, axs = plt.subplots(1, 3, figsize=(9, 3), sharey=True)
axs[0].bar(names, values)
axs[1].scatter(names, values)
axs[2].plot(names, values)
fig.suptitle('Categorical Plotting')

2. Seaborn

Seaborn是在Matplotlib基礎(chǔ)上經(jīng)過高級(jí)封裝的可視化庫,一般用于統(tǒng)計(jì)分析凸主,是數(shù)據(jù)科學(xué)領(lǐng)域的核心可視化庫橘券,類似于kaggle這種數(shù)據(jù)比賽大部分都用Seaborn。

解釋下高級(jí)封裝卿吐,所謂封裝就是把很多圖表的功能模塊化旁舰,拿來即用,不需要你寫很多代碼實(shí)現(xiàn)嗡官。

比如說Seaborn可以一行代碼設(shè)置圖表的配色風(fēng)格箭窜,什么統(tǒng)計(jì)風(fēng)、商務(wù)風(fēng)衍腥、學(xué)術(shù)風(fēng)磺樱,都給你搭配的妥妥的,還有像置信區(qū)間這種專業(yè)領(lǐng)域的圖表也集成到函數(shù)中婆咸。

學(xué)習(xí)文檔:https://seaborn.pydata.org/

另外Seaborn與Pandas竹捉、Numpy集成的非常好,可以輕松使用Series尚骄、DataFrame块差、array數(shù)據(jù)類型進(jìn)行圖表開發(fā),相較于Matplotlib節(jié)省了很多數(shù)據(jù)處理的時(shí)間,讓你更加專注于制圖憨闰。

示例:

import seaborn as sns
sns.set_theme(style="darkgrid")

tips = sns.load_dataset("tips")
g = sns.jointplot(x="total_bill", y="tip", data=tips,
                  kind="reg", truncate=False,
                  xlim=(0, 60), ylim=(0, 12),
                  color="m", height=7)

3. Altair

Altair也是Python中一個(gè)主打統(tǒng)計(jì)分析的可視化庫询兴,它和Seaborn不同的是,語法會(huì)更加簡潔起趾,讓你在可視化的過程中去分析梳理數(shù)據(jù)诗舰。

Altair基于Vega-Lite語法規(guī)則,將可視化描述為從數(shù)據(jù)到圖形標(biāo)記(例如训裆,圓圈眶根、矩形或折線)的屬性(例如,顏色边琉、大小属百、形狀或透明度)的編碼映射過程,使用Json的格式規(guī)范圖表外觀变姨,使用起來非常簡單族扰。

學(xué)習(xí)文檔:https://altair-viz.github.io/

示例代碼

import altair as alt
from vega_datasets import data

source = data.iris()

alt.Chart(source).mark_circle().encode(
    alt.X('sepalLength').scale(zero=False),
    alt.Y('sepalWidth').scale(zero=False, padding=1),
    color='species',
    size='petalWidth'
)

4. Bokeh

Bokeh主打web交互式可視化,圖表不再是冷冰冰的圖片定欧,而是可以隨意去調(diào)整的可視化交互工具渔呵,比如創(chuàng)建看板、應(yīng)用砍鸠、網(wǎng)頁扩氢,都可以輕松實(shí)現(xiàn),你也可以在jupyter notebook上去展示Bokeh圖表爷辱。

Bokeh有很多的交互工具录豺,比如縮放、平移饭弓、框選双饥、懸停、重置弟断、編輯咏花、圖像導(dǎo)出等等,使用起來非常方便夫嗓。

學(xué)習(xí)文檔:https://docs.bokeh.org/

  • 搭建可視化應(yīng)用
  • 搭建看板
  • Jupyter notebook數(shù)據(jù)可視化探索
  • 數(shù)據(jù)流分析
  • web網(wǎng)頁

示例代碼

import numpy as np
import pandas as pd

from bokeh.palettes import tol
from bokeh.plotting import figure, show

N = 10
df = pd.DataFrame(np.random.randint(10, 100, size=(15, N))).add_prefix('y')

p = figure(x_range=(0, len(df)-1), y_range=(0, 800))
p.grid.minor_grid_line_color = '#eeeeee'

names = [f"y{i}" for i in range(N)]
p.varea_stack(stackers=names, x='index', color=tol['Sunset'][N], legend_label=names, source=df)

p.legend.orientation = "horizontal"
p.legend.background_fill_color = "#fafafa"

show(p)

5. plotly

plotly.js是非常出名的交互式可視化工具迟螺,它有Python的第三方接口,也就是plotly庫舍咖。

plotly圖表類型比較豐富矩父,比如折線圖、散點(diǎn)圖排霉、面積圖掖蛤、條形圖、誤差條邓了、方框圖滋迈、直方圖佃蚜、熱圖、子圖、多軸圖、極坐標(biāo)圖微驶、氣泡圖、地圖等等开睡,這些都集成好固定的函數(shù)用法因苹,可以拿來即用。

plotly繪制的圖表相對(duì)比較美觀篇恒,適合商用展示扶檐,且它的圖表可以基于web,能進(jìn)行多元化的交互操作胁艰。

其次plotly可定制化也非常強(qiáng)款筑,類似于matplotlib,你可以對(duì)圖表做任何細(xì)節(jié)的修改腾么。

學(xué)習(xí)文檔:https://plotly.com/python/

示例代碼

import plotly.graph_objects as go  
import numpy as np  
  
# Data to be plotted 
x = np.outer(np.linspace(-2, 2, 30), np.ones(30))  
y = x.copy().T  
z = np.cos(x ** 2 + y ** 2)  
  
# plotting the figure 
fig = go.Figure(data=[go.Surface(x=x, y=y, z=z)])  
  
fig.show()

小結(jié)

上述的5個(gè)Python可視化庫都是Python中比較常見的奈梳,幾乎能實(shí)現(xiàn)你大部分需求,還有一些垂直類的需求需要專門的庫來實(shí)現(xiàn)哮翘,比如BI颈嚼、地圖等等毛秘,這個(gè)后面慢慢分享饭寺。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市叫挟,隨后出現(xiàn)的幾起案子艰匙,更是在濱河造成了極大的恐慌,老刑警劉巖抹恳,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件员凝,死亡現(xiàn)場離奇詭異,居然都是意外死亡奋献,警方通過查閱死者的電腦和手機(jī)健霹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓶蚂,“玉大人糖埋,你說我怎么就攤上這事∏哉猓” “怎么了瞳别?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我祟敛,道長疤坝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任馆铁,我火速辦了婚禮跑揉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘埠巨。我一直安慰自己畔裕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布乖订。 她就那樣靜靜地躺著扮饶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乍构。 梳的紋絲不亂的頭發(fā)上甜无,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天,我揣著相機(jī)與錄音哥遮,去河邊找鬼岂丘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛眠饮,可吹牛的內(nèi)容都是我干的奥帘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼仪召,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼寨蹋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起扔茅,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤已旧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后召娜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體运褪,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年玖瘸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秸讹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡雅倒,死狀恐怖璃诀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情屯断,我是刑警寧澤文虏,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布侣诺,位于F島的核電站,受9級(jí)特大地震影響氧秘,放射性物質(zhì)發(fā)生泄漏年鸳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一丸相、第九天 我趴在偏房一處隱蔽的房頂上張望搔确。 院中可真熱鬧,春花似錦灭忠、人聲如沸膳算。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涕蜂。三九已至,卻和暖如春映琳,著一層夾襖步出監(jiān)牢的瞬間机隙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來泰國打工萨西, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留有鹿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓谎脯,卻偏偏與公主長得像葱跋,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子源梭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容