熱線電話:13121318867

登錄
首頁精彩閱讀3000字/16張炫酷動態圖,推薦一款好用到爆的Python可視化利器
3000字/16張炫酷動態圖,推薦一款好用到爆的Python可視化利器
2021-12-10
收藏

作者:俊欣

來源:關于數據分析與可視化

一般提及數據可視化,會Python的讀者朋友可能第一時間想到的就是matplotlib模塊或者是seaborn模塊,而談及繪制動態圖表,大家想到的比較多的是Plotly或者是Pyecharts。

今天小編來為大家介紹另外一個繪制動態圖表的模塊,使用起來也是非常的便捷,而且繪制出來的圖表也是十分的精湛好看,它叫pygal,相比較seaborn等常用的模塊相比,該模塊的優點有:

  • 高度可定制,而且用法簡單
  • 圖表可交互性強
  • 圖像可導出SVG格式(矢量圖形)
  • 與Django、Flask等Web框架高度集成

因此,pygal模塊小編以為還是值得拿出來講講的,我們大致會說這些內容:

模塊的安裝

模塊的安裝十分的簡單,通過pip install就能夠實現,

pip install pygal

當然國內的小伙伴要是覺得下載的速度慢,也可以通過加入第三方的鏡像來提速

pip install -i http://pypi.douban.com/simple/ pygal

柱狀圖

我們來看柱狀圖的繪制,先看單列柱狀圖的例子

view = pygal.Bar() #圖表名 view.title = '柱狀圖' #添加數據 view.add('數據', [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('奇數', [1,3,5,7,9,11])
view.add('偶數', [2,4,6,8,10,12])

output

要是我們想將柱狀圖橫過來看,將上述代碼當中的一小部分替換成

view = pygal.HorizontalBar()

output

而要是我們想要堆疊形式的柱狀圖,則需要將上述代碼當中的一小部分替換成

view = pygal.HorizontalStackedBar()

output

折線圖

對于折線圖的繪制,其實與上面柱狀圖的繪制基本一致,我們直接來看代碼

view = pygal.Line() #圖表名 view.title = '折線圖' #添加數據 view.add('奇數', [1,3,5,7,9,11])
view.add('偶數', [2,4,6,8,10,12]) #在瀏覽器中查看 view.render_in_browser()

output

也和上面柱狀圖的代碼邏輯保持一致,折線圖中也有堆疊式的折線圖,只需要將上面的代碼當中的一部分替換成

view = pygal.StackedLine(fill=True)

餅圖

同樣,餅圖的繪制也是相似的代碼邏輯

view = pygal.Pie() #圖表名 view.title = '餅狀圖' #添加數據 view.add('A', 23)
view.add('B', 40)
view.add('C', 15)

view.render_to_file('pie.svg')

output

同時我們也可以繪制圓環圖,在餅圖的中心掏空出來一塊,代碼大致相同,只是需要將上面的一小部分替換成

#設置空心圓半徑 view = pygal.Pie(inner_radius=0.4)

output

當我們每個類當中不止只有一個數字的時候,可以繪制多級餅圖,代碼如下

view = pygal.Pie() #圖表名 view.title = '多級餅圖' #添加數據 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

雷達圖

雷達圖可以幫我們從多個維度來分析數據,例如我們分析運動員的運動能力的時候,就會從多個維度來綜合看待,這個時候雷達圖就變得非常有用,代碼如下

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

當然上面的數據都是瞎編的,喜歡NBA的讀者朋友或者是喜歡上面幾個球形的讀者朋友看了可別噴我哦

箱型圖

箱型圖可以快速地幫我們了解數據的分布,查看是否存在極值。在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安全衛士', [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安全衛士', 2933)
gauge_chart.add('Edge', 2530)
gauge_chart.render_to_file('gauge_1.svg')

output

熱力圖

熱力圖可以更加直觀的觀測每個區域當中數據的分布,代碼如下

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

我們也可以針對不同國家的計數來進行地圖的繪制,例如不同國家重大疾病的死亡人數,代碼如下

worldmap_chart = pygal.maps.world.World()
worldmap_chart.title = 'Minimum deaths by capital punishement (source: Amnesty International)' worldmap_chart.add('In 2012', { '國家名稱的縮寫': 數量, '國家名稱的縮寫': 數量,
  .....
})
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 = '法國區域圖' fr_chart.add('區域名稱', ['數量'])
fr_chart.render_in_browser()

output

但是提及繪制某個國家的地圖而言,目前支持的國家的數量并不多,在官網上面也只羅列法國和瑞士這兩個國家,其他國家的插件下載,小編嘗試下載了一下,都下載不了,后面就等官方的更新與優化把

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢