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中填数据就可以了。
如果文中有什么错误的地方,还望网友指出来。
原文地址:https://www.cnblogs.com/mrlayfolk/p/12633685.html