
作者:俊欣
來源:關于數(shù)據(jù)分析與可視化
一般提及數(shù)據(jù)可視化,會Python的讀者朋友可能第一時間想到的就是matplotlib模塊或者是seaborn模塊,而談及繪制動態(tài)圖表,大家想到的比較多的是Plotly或者是echarts/' style='color:#000;font-size:inherit;'>Pyecharts。
今天小編來為大家介紹另外一個繪制動態(tài)圖表的模塊,使用起來也是非常的便捷,而且繪制出來的圖表也是十分的精湛好看,它叫pygal,相比較seaborn等常用的模塊相比,該模塊的優(yōu)點有:
因此,pygal模塊小編以為還是值得拿出來講講的,我們大致會說這些內容:
模塊的安裝十分的簡單,通過pip install就能夠實現(xiàn),
pip install pygal
當然國內的小伙伴要是覺得下載的速度慢,也可以通過加入第三方的鏡像來提速
pip install -i http://pypi.douban.com/simple/ pygal
view = pygal.Bar() #圖表名 view.title = '柱狀圖' #添加數(shù)據(jù) view.add('數(shù)據(jù)', [1,3,5,7,9,11]) #在瀏覽器中查看 #view.render_in_browser() view.render_to_file('bar.svg')
output
我們既可以通過render_to_file()方法來導出成文件,也可以通過render_in_browser()方法在瀏覽器中查看
我們再來看多列柱狀圖的繪制,代碼如下
view.add('奇數(shù)', [1,3,5,7,9,11])
view.add('偶數(shù)', [2,4,6,8,10,12])
output
要是我們想將柱狀圖橫過來看,將上述代碼當中的一小部分替換成
view = pygal.HorizontalBar()
output
而要是我們想要堆疊形式的柱狀圖,則需要將上述代碼當中的一小部分替換成
view = pygal.HorizontalStackedBar()
output
對于折線圖的繪制,其實與上面柱狀圖的繪制基本一致,我們直接來看代碼
view = pygal.Line() #圖表名 view.title = '折線圖' #添加數(shù)據(jù) view.add('奇數(shù)', [1,3,5,7,9,11])
view.add('偶數(shù)', [2,4,6,8,10,12]) #在瀏覽器中查看 view.render_in_browser()
output
也和上面柱狀圖的代碼邏輯保持一致,折線圖中也有堆疊式的折線圖,只需要將上面的代碼當中的一部分替換成
view = pygal.StackedLine(fill=True)
同樣,餅圖的繪制也是相似的代碼邏輯
view = pygal.Pie() #圖表名 view.title = '餅狀圖' #添加數(shù)據(jù) view.add('A', 23)
view.add('B', 40)
view.add('C', 15)
view.render_to_file('pie.svg')
output
同時我們也可以繪制圓環(huán)圖,在餅圖的中心掏空出來一塊,代碼大致相同,只是需要將上面的一小部分替換成
#設置空心圓半徑 view = pygal.Pie(inner_radius=0.4)
output
當我們每個類當中不止只有一個數(shù)字的時候,可以繪制多級餅圖,代碼如下
view = pygal.Pie() #圖表名 view.title = '多級餅圖' #添加數(shù)據(jù) view.add('A', [20, 25, 30, 45]) view.add('B', [15, 19, 25, 50]) view.add('C', [18, 22, 28, 35]) view.render_to_file('pie_multi.svg')
output
雷達圖可以幫我們從多個維度來分析數(shù)據(jù),例如我們分析運動員的運動能力的時候,就會從多個維度來綜合看待,這個時候雷達圖就變得非常有用,代碼如下
radar_chart = pygal.Radar()
radar_chart.title = 'NBA 各球員能力比拼' radar_chart.x_labels = ['得分', '防守', '助攻', '失誤', '籃板']
radar_chart.add('庫里', [70, 98, 96, 85, 97])
radar_chart.add('詹姆斯', [60, 95, 50, 75, 99])
radar_chart.add('杜蘭特', [94, 45, 88, 91, 98])
radar_chart.render_to_file('radar_nba.svg')
output
當然上面的數(shù)據(jù)都是瞎編的,喜歡NBA的讀者朋友或者是喜歡上面幾個球形的讀者朋友看了可別噴我哦
箱型圖可以快速地幫我們了解數(shù)據(jù)的分布,查看是否存在極值。在pygal模塊當中也提供了繪制箱型圖的方法,代碼如下
box_plot = pygal.Box() box_plot.title = '各瀏覽器的使用量' box_plot.add('Chrome', [6395, 8212, 7520, 7218, 12464, 1660, 2123, 8607]) box_plot.add('Firefox', [7512, 8099, 11700, 2651, 6361, 1044, 8502, 9450]) box_plot.add('360安全衛(wèi)士', [3472, 2933, 4203, 5510, 5810, 1828, 9013, 4669]) box_plot.add('Edge', [4310, 4109, 5935, 7902, 14404, 13608, 34004, 10210]) box_plot.render_to_file("box.svg")
output
儀表盤可以幫助我們量化指標的好壞,代碼如下
gauge_chart = pygal.Gauge(human_readable=True)
gauge_chart.title = '不同瀏覽器的性能差異' gauge_chart.range = [0, 10000]
gauge_chart.add('Chrome', 8212)
gauge_chart.add('Firefox', 8099)
gauge_chart.add('360安全衛(wèi)士', 2933)
gauge_chart.add('Edge', 2530)
gauge_chart.render_to_file('gauge_1.svg')
output
熱力圖可以更加直觀的觀測每個區(qū)域當中數(shù)據(jù)的分布,代碼如下
treemap = pygal.Treemap() treemap.title = 'Binary TreeMap' treemap.add('A', [12, 15, 12, 40, 2, 10, 10, 13, 12, 13, 40, None, 19]) treemap.add('B', [4, 2, 5, 10, 30, 4, 2, 7, 4, -10, None, 8, 30, 10]) treemap.add('C', [3, 8, 3, 3, 5, 15, 3, 5, 4, 12]) treemap.add('D', [23, 18]) treemap.add('E', [11, 2, 1, 12, 3, 13, 1, 2, 13, 14, 3, 1, 2, 10, 1, 10, 12, 1]) treemap.add('F', [31]) treemap.add('G', [15, 9.3, 8.1, 12, 4, 34, 2]) treemap.add('H', [12, 13, 3]) treemap.render_in_browser()
output
首先我們來看世界地圖的繪制,在這之前,我們還要下載繪制整個世界地圖所需要的插件
pip install pygal_maps_world
代碼如下
worldmap_chart = pygal.maps.world.World()
worldmap_chart.title = 'Some countries' worldmap_chart.add('A countries', ['國家名稱的縮寫'])
worldmap_chart.add('B countries', ['國家名稱的縮寫'])
worldmap_chart.add('C countries', ['國家名稱的縮寫'])
worldmap_chart.render_in_browser()
output
我們也可以針對不同國家的計數(shù)來進行地圖的繪制,例如不同國家重大疾病的死亡人數(shù),代碼如下
worldmap_chart = pygal.maps.world.World()
worldmap_chart.title = 'Minimum deaths by capital punishement (source: Amnesty International)' worldmap_chart.add('In 2012', { '國家名稱的縮寫': 數(shù)量, '國家名稱的縮寫': 數(shù)量,
.....
})
worldmap_chart.render_in_browser()
output
我們也可以繪制以五大洲為主的世界地圖,代碼如下
worldmap_continent = pygal.maps.world.SupranationalWorld()
worldmap_continent.add('Asia', [('asia', 1)])
worldmap_continent.add('Europe', [('europe', 1)])
worldmap_continent.add('Africa', [('africa', 1)])
worldmap_continent.add('North america', [('north_america', 1)])
worldmap_continent.add('South america', [('south_america', 1)])
worldmap_continent.add('Oceania', [('oceania', 1)])
worldmap_continent.add('Antartica', [('antartica', 1)])
worldmap_continent.render_in_browser()
output
當然我們也可以將某個國家作為繪制,例如我們以法國為例,首先我們需要下載繪制單獨某個國家的地圖所依賴的插件
pip install pygal_maps_fr
代碼如下
fr_chart = pygal.maps.fr.Regions()
fr_chart.title = '法國區(qū)域圖' fr_chart.add('區(qū)域名稱', ['數(shù)量'])
fr_chart.render_in_browser()
output
但是提及繪制某個國家的地圖而言,目前支持的國家的數(shù)量并不多,在官網上面也只羅列法國和瑞士這兩個國家,其他國家的插件下載,小編嘗試下載了一下,都下載不了,后面就等官方的更新與優(yōu)化把
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉換:從基礎用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結構數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結構數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預期算子的內涵、作用與應用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結構數(shù)據(jù)特征價值的專業(yè)核心 表結構數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結構化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應用 在數(shù)據(jù)分析與統(tǒng)計學領域,假設檢驗是驗證研究假設、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結構數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結構數(shù)據(jù)(以 “行 - 列” 存儲的結構化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網絡請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結構數(shù)據(jù)價值的核心操盤手 表格結構數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務邏輯:從規(guī)則拆解到數(shù)據(jù)把關的實戰(zhàn)指南 在業(yè)務系統(tǒng)落地過程中,“業(yè)務邏輯” 是連接 “需求設計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到決策支撐的價值導向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10