Python:數據可視化pyecharts的使用

什麼是pyecharts?  

  pyecharts 是一個用於生成 Echarts 圖表的類庫。 html

  echarts 是百度開源的一個數據可視化 JS 庫,主要用於數據可視化。pyecharts 是一個用於生成 Echarts 圖表的類庫。實際上就是 Echarts 與 Python 的對接。python

  使用 pyecharts 能夠生成獨立的網頁,也能夠在 flask , Django 中集成使用。git

 

pyecharts包含的圖表

  Bar(柱狀圖/條形圖) 
  Bar3D(3D 柱狀圖)
  Boxplot(箱形圖)
  EffectScatter(帶有漣漪特效動畫的散點圖)
  Funnel(漏斗圖)
  Gauge(儀表盤)
  Geo(地理座標系)
  Graph(關係圖)
  HeatMap(熱力圖)
  Kline(K線圖)
  Line(折線/面積圖)
  Line3D(3D 折線圖)
  Liquid(水球圖)
  Map(地圖)
  Parallel(平行座標系)
  Pie(餅圖)
  Polar(極座標系)
  Radar(雷達圖)
  Sankey(桑基圖)
  Scatter(散點圖)
  Scatter3D(3D 散點圖)
  ThemeRiver(主題河流圖)
  WordCloud(詞雲圖)

  用戶自定義

  Grid 類:並行顯示多張圖
  Overlap 類:結合不一樣類型圖表疊加畫在同張圖上
  Page 類:同一網頁按順序展現多圖
  Timeline 類:提供時間線輪播多張圖

pyecharts安裝

1 pip install pyecharts
  
 
這裏要專門說明一下,自從 0.3.2 開始,爲了縮減項目自己的體積以及維持 pyecharts 項目的輕量化運行,pyecharts 將再也不自帶地圖 js 文件。如用戶須要用到地圖圖表(Geo、Map),可自行安裝對應的地圖文件包。
 不然在用到這兩個包的時候,並能完整的顯示地圖效果。
    1. 全球國家地圖echarts-countries-pypkg (1.9MB): 世界地圖和 213 個國家,包括中國地圖
    2. 中國省級地圖echarts-china-provinces-pypkg (730KB):23 個省,5 個自治區
    3. 中國市級地圖echarts-china-cities-pypkg (3.8MB):370 箇中國城市

  Windows下經過已下的pip命令進行安裝github

1 pip install echarts-countries-pypkg
2 
3 pip install echarts-china-provinces-pypkg
4 
5 pip install echarts-china-cities-pypkg

 

 Linux下經過如下的pip命令進行安裝
 1 sudo pip3 install echarts-countries-pypkg 
 2  
 3  
 4 sudo pip3 install echarts-china-provinces-pypkg
 5  
 6  
 7 sudo pip3 install echarts-china-cities-pypkg
 8  
 9  
10 sudo pip3 install echarts-countries-pypkg 
11  
12  
13 sudo pip3 install echarts-china-provinces-pypkg
14  
15  
16 sudo pip3 install echarts-china-cities-pypkg
 

相關函數、參數說明

  先介紹一些可能會用到的基本函數:數據庫

  • add()    主要方法,用於添加圖表的數據和設置各類配置項flask

  • show_config()    打印輸出圖表的全部配置項api

  • render()    默認將會在根目錄下生成一個 render.html 的文件,支持 path 參數,設置文件保存位置,如 render(r"e:my_first_chart.html"),文件用瀏覽器打開。瀏覽器

    默認的編碼類型爲 UTF-8,在 Python3 中是沒什麼問題的,Python3 對中文的支持好不少。可是在 Python2 中,編碼的處理是個很頭疼的問題,暫時沒能找到完美的解決方法,目前只能經過文本編輯器本身進行二次編碼,我用的是 Visual Studio Code,先經過 Gbk 編碼從新打開,而後再用 UTF-8 從新保存,這樣用瀏覽器打開的話就不會出現中文亂碼問題了。(這裏是某位大佬遇到的問題,我直接複製過來了,供你們參考)app

  基本上全部的圖表類型都是這樣繪製的:echarts

    1. chart_name = Type() 初始化具體類型圖表。

    2. add() 加數據及配置項。

    3. render() 生成 .html 文件。

 

基本圖表使用實例

Bar(柱狀圖/條形圖)

1 from pyecharts import Bar
2 bar =Bar("個人第一個圖表", "這裏是副標題")
3 bar.add("服裝", ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"], [5, 20, 36, 10, 75, 90])
4 bar.show_config()
5 bar.render()

from pyecharts import Bar
bar =Bar("x 軸和 y 軸交換")
bar.add("商家A", attr, v1)
bar.add("商家B", attr, v2, is_convert=True)
bar.render()

 

 說明:以下代碼,atf_tb1屬性是並不會顯示在圖表中的

1     bar = Bar()
2     bar.add('格式化',["atf_tb1","shop"],[10,50])
3     bar.add("範圍", ["shop"], [120])
4     bar.render()

能夠看到atf_tb1並無加載到圖表中,說明並不支持這麼使用

 

 

Pie(餅圖)

1 from pyecharts import Pie
2 attr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
3 v1 =[11, 12, 13, 10, 10, 10]
4 pie =Pie("餅圖示例")
5 pie.add("", attr, v1, is_label_show=True)
6 pie.show_config()
7 pie.render()

 

 

 

WordCloud(詞雲圖)

1 from pyecharts import WordCloud 
2 name =['Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 'Charter Communications', 'Chick Fil A', 'Planet Fitness', 'Pitch Perfect', 'Express', 'Home', 'Johnny Depp', 'Lena Dunham', 'Lewis Hamilton', 'KXAN', 'Mary Ellen Mark', 'Farrah Abraham', 'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break']
3 value =[10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265]
4 wordcloud =WordCloud(width=1300, height=620)
5 wordcloud.add("", name, value, word_size_range=[20, 100])
6 wordcloud.show_config()
7 wordcloud.render()

 

  詞雲圖的形狀能夠經過shape參數來選擇

1 wordcloud =WordCloud(width=1300, height=620)
2 wordcloud.add("", name, value, word_size_range=[30, 100], shape='diamond')
3 wordcloud.show_config()
4 wordcloud.render()

 

 

 

 

 

Geo(地理座標系)

 

1 from pyecharts import Geo 
2 data =[("海門", 9), ("鄂爾多斯", 12), ("招遠", 12), ("舟山", 12), ("齊齊哈爾", 14), ("鹽城", 15)]
3 geo =Geo("全國主要城市空氣質量", "data from pm2.5", title_color="#fff", title_pos="center", width=1200, height=600, background_color='#404a59')
4 attr, value =geo.cast(data)
5 geo.add("", attr, value, type="effectScatter", is_random=True, effect_scale=5)
6 geo.show_config()
7 geo.render()

 重要問題說明

  這裏也要先說明一點由於echarts裏面有的地點可能沒有,一旦添加了沒有的在這裏面,將會生成一個空的圖。

  有四個解決辦法:

    一是最簡單的把不存在刪掉;

    二是到百度地圖api裏把找不到的地方的經緯度加進原始的包裏(這個辦法你們能夠參看這位大佬的博客https://blog.csdn.net/summerstones/article/details/78078789);

    三是若是你的數據在地圖中並無座標城市,能夠經過 geo_cities_coords 本身進行添加,GeoLine圖一樣如此

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # Author: jyroy
 4 from pyecharts import Geo
 5 
 6 if __name__ == '__main__':
 7 
 8     list_city_name=["100,30-1","130,40-2"]
 9     list_num = [["value1","value2"],["value3"]]
10     geo_cities_coords = {"100,30-1":[100,30],"130,40-2":[130,40]}
11 
12     geo = Geo("Geo 實例")
13     geo.add("",list_city_name, list_num, geo_cities_coords=geo_cities_coords)
14     geo.render()

 

 

    四是若是你是批量的導入導入數據(相似從數據庫中),異常數據並不想插入到地圖中去,能夠經過try...except...來清除這少部分的異常數據,以下代碼,這是我本身遇到的問題的想到的一個解決辦法,data是我從數據庫中獲得的字典

  固然若是數據量比較大的話,這樣作效率可能不高,給你們一個參考吧

    for n, m in data.items():   #data是我從數據庫中讀取的城市的字典數據
        list_1 = []
        list_2 = []
        list_1.append(n)
        list_2.append(m)
        try:
            geo.add("", list_1, list_2, visual_range=[0, 3000], visual_text_color="#fff", symbol_size=15, is_visualmap=True)
        except Exception as e:
            pass

   固然若是數據量比較大的話,這樣作效率可能不高,給你們一個參考吧這是個人項目裏一部分的數據獲得的結果,我拿了7萬多條數據來作的測試,感受效果還ok

 

 

Line(折線/面積圖)

1 from pyecharts import Line 
2 attr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
3 v1 =[5, 20, 36, 10, 10, 100]v2 =[55, 60, 16, 20, 15, 80]
4 line =Line("折線圖示例")
5 line.add("商家A", attr, v1, mark_point=["average"])
6 line.add("商家B", attr, v2, is_smooth=True, mark_line=["max", "average"])
7 line.show_config()
8 line.render()

 

1 line =Line("折線圖-面積圖示例")
2 line.add("商家A", attr, v1, is_fill=True, line_opacity=0.2, area_opacity=0.4, symbol=None)
3 line.add("商家B", attr, v2, is_fill=True, area_color='#000', area_opacity=0.3, is_smooth=True)
4 line.show_config()
5 line.render()


 

寫在後面

  由於我在用的過程當中都是結合數據庫批量處理的,因此就不把我寫的全都放上了,這有上面地圖那裏第三個解決辦法放了一部分我本身的代碼,其餘的都是網上常見的一些測試用例。

  這裏都是基礎的介紹(我認爲可能經常使用的一些圖表),想了解更多的關於pyecharts的,就不推薦其餘人的博客了,都大同小異,你們仍是移步官網 http://pyecharts.org/#/zh-cn/ ,由於這是個開源的項目,pyecharts也是三我的一直在維護的,官網內容很是豐富,並且有中文版。

  有想了解我本身作的實例的,歡迎Q我(看博客側邊欄~)

  大佬們支持一下!點下推薦和關注吧~~

相關文章
相關標籤/搜索