python-使用pyecharts繪制各省份985學校數量圖


1、環境

代碼運行環境:python3.7

相關的庫:pyecharts 1.7.1

代碼編輯器:visual studio code

2、目的

通過使用pyecharts庫,來繪制全國各省985高校的數量分布圖,用這個來練習pyecharts庫繪制地圖。

3、相關說明

(1)pyecharts庫簡介

官方文檔:https://pyecharts.org/#/zh-cn/intro

圖庫樣本:http://gallery.pyecharts.org/#/README

官方的簡介如下:Echarts是一個由百度開源的數據可視化,能夠進行良好的交互性,精巧的圖表設計,得到了眾多開發者的認可。而Python是一門富有表達力的語言,很適合用於數據處理。分析遇上數據可視化時,pyecharts誕生了。

使用pyecharts庫來生成地圖特別方便,而且官方提供了圖庫樣本,對開發人員來說省事了不少,我也是今天才初次接觸到這個庫,這篇博客也是簡單的記錄一下自己的學習過程。

(2)使用visual studio code動態預覽html文件

參考鏈接:https://jingyan.baidu.com/album/0aa22375ef8162c8cc0d64a8.html?picindex=3

由於使用pyecharts庫輸出的是一個html文件,我又不想每次都去點擊輸出的html文件再運行,很麻煩。於是在網上找了一下如何在vs code中運行html文件。

我執行python,更新html后,繪制的圖就會更新,用來調試還是很方便的。效果圖如下:

 4、代碼及其說明

(1)官方給的參考代碼

鏈接:http://gallery.pyecharts.org/#/Map/map_visualmap_piecewise

 1 from pyecharts import options as opts
 2 from pyecharts.charts import Map
 3 from pyecharts.faker import Faker
 4 
 5 c = (
 6     Map()
 7     .add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
 8     .set_global_opts(
 9         title_opts=opts.TitleOpts(title="Map-VisualMap(分段型)"),
10         visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True),
11     )
12     .render("map_visualmap_piecewise.html")
13 )

這種寫作風格的代碼我之前沒怎么接觸過(可能是由於我接觸的代碼太少了,囧),看了好一會兒才明白它的意思。

它的含義其實就是實例化了一個類對象,並使用了類的add、set_global_opts和render方法,上面的代碼等價與如下的代碼:

1 m = Map()
2 m.add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
3 m.set_global_opts(
4     title_opts=opts.TitleOpts(title="Map-VisualMap(分段型)"),
5     visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True),
6 )
7 m.render("map_visualmap_piecewise.html")

果然我還是習慣下面這種代碼風格。

(2)各省份985高校分布圖

直接放代碼了:

 1 # encoding: utf-8
 2 
 3 from pyecharts.charts import Map
 4 from pyecharts import options as opts
 5 from college import school_list_of_985
 6 
 7 
 8 # 獲取高校數據
 9 def get_data():
10     provinces = []
11     school_nums = []
12     for province in school_list_of_985:
13         provinces.append(province)
14         school_nums.append(len(school_list_of_985[province]))
15     return [provinces, school_nums]
16 
17 
18 # 繪制地圖
19 def draw_a_map(data):
20     provinces   = data[0]
21     school_nums = data[1]
22     mm = Map()
23     mm.add('學校數量', [[provinces[i], school_nums[i]] for i in range(len(provinces))], "china")
24     mm.set_global_opts(
25         title_opts=opts.TitleOpts(title="全國985高校分布圖"),
26         visualmap_opts=opts.VisualMapOpts(max_=8, is_piecewise=True, split_number=4),
27     )
28     mm.render("map_visualmap_piecewise.html")
29 
30 
31 if __name__ == '__main__':
32     
33     data = data = get_data()
34 
35     if len(data[0]) == len(data[1]):
36         draw_a_map(data)

這里主要調用了Map類的兩個方法,

一個是add方法,官方說明為:https://pyecharts.org/#/zh-cn/geography_charts?id=map%ef%bc%9a%e5%9c%b0%e5%9b%be

一個是set_global_opts方法,沒找到官方說明,不過它的參數也不多,直接看源碼也能大概猜個一二。

上面的college是我自定義的一個py文件,里面放的是一個字典school_list_of_985,我也把它放出來吧。

 1 # {province: school}
 2 school_list_of_985 = {
 3 "北京": ['北京大學', '清華大學', '中國人民大學', '北京理工大學', '北京航空航天大學', '北京師范大學', '中央民族大學', '中國農業大學'],
 4 '陝西': ['西安交通大學', '西北農林科技大學', '西北工業大學'],
 5 '湖南': ['湖南大學', '中南大學', '國防科技大學'],
 6 '上海': ['同濟大學', '復旦大學', '上海交通大學', '華東師范大學'],
 7 '四川': ['四川大學', '電子科技大學'],
 8 '湖北': ['武漢大學', '華中科技大學'],
 9 '江蘇': ['南京大學', '東南大學'],
10 '天津': ['天津大學', '南開大學'],
11 '遼寧': ['東北大學', '大連理工大學'],
12 '山東': ['山東大學', '中國海洋大學'],
13 '廣東': ['中山大學', '華南理工大學'],
14 '福建': ['廈門大學'],
15 '浙江': ['浙江大學'],
16 '安徽': ['中國科學技術大學'],
17 '重慶': ['重慶大學'],
18 '黑龍江': ['哈爾濱工業大學'],
19 '吉林': ['吉林大學'],
20 '甘肅': ['蘭州大學']
21 }

5、效果圖

執行的結果如下:

 至此,這篇博客也就寫在這里了,當然pyecharts庫還有很多其它的圖表,我暫時沒使用,就不說明它了。使用現成的API進行開發,其實是很快速簡單的一件事,往API中填數據就可以了。

如果文中有什么錯誤的地方,還望網友指出來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM