pyecharts实例————绘制中国各省高考人数和大学数量可视化地图


目标

通过提供的csv文件,利用pyecharts(v1.7),在中国地图上展示各省的高考人数和大学数量。

分析csv文件

由于数据较少,直接在此列出

,高考人数,,大学数量,
省/市,2017年,2016年,211&985大学数量,公办本科大学数量
河南,86.3万,82万,1,37
广东,75.7万,73.3万,4,41
山东,58.3万,60.2万,3,44
四川,58.3万,57.13万,5,34
安徽,49.9万,50.99万,3,30
河北,43.6万,42.31万,0,36
贵州,41.2万,37.38万,1,19
湖南,41.1万,40.16万,3,31
广西,36.5万,33万,1,24
江西,36.5万,36.06万,1,23
湖北,36.2万,36.14万,1,36
江苏,33万,36.04万,11,45
陕西,31.9万,32.8万,1,34
山西,31.7万,33.9万,1,22
云南,29.3万,28万,1,22
浙江,29.1万,30.74万,1,32
甘肃,28.5万,29.6万,1,17
重庆,21.1万,24.88万,2,17
辽宁,20.8万,21.82万,4,4
内蒙古,19.8万,20.11万,1,14
福建,18.8万,17.5万,2,22
黑龙江,18.8万,19.7万,4,26
新疆,18.4万,16.61万,2,13
吉林,14.3万,14.85万,3,25
宁夏,6.9万,6.9万,1,4
北京,6万,6.12万,26,60
海南,5.7万,6.04万,1,5
天津,5.7万,6万,4,18
上海,5万,5.1万,9,31
青海,4.6万,4.5万,1,3
西藏,2.8万,2.4万,1,3

数据从第三行开始,应以第二行作为真正的表头。
对于第二三列中某某万的表述,需进行处理再使用,因为pyecharts是无法将86.3万识别为数的。

求解

具体请见注释

from pyecharts import options as opts
from pyecharts.charts import Map
import pandas as pd

FileNameStr = 'dataset.csv'
# 读取csv,以第二行作为表头
df = pd.read_csv(FileNameStr, encoding='utf-8', header=1)

# 新建列表,并将已删除'万'字的数据存入
num_2016 = []
for row in df['2016年']:
    num_2016.append(row[:-1])
num_2017 = []
for row in df['2017年']:
    num_2017.append(row[:-1])

map0 = Map()
map0.set_global_opts(
        title_opts=opts.TitleOpts(title="全国各省份高考人数", subtitle="2016年至2017年"),  # 表格标题
        visualmap_opts=opts.VisualMapOpts(range_text=['单位:万人\n'], min_=0, max_=80),  # 设置图例文本和最大值最小值
        legend_opts=opts.LegendOpts(selected_mode='single')  # 设置图例选择模式为单选
)
map0.add("2016年", [list(z) for z in zip(list(df['省/市']), num_2016)], "china")  # 添加数据
map0.add("2017年", [list(z) for z in zip(list(df['省/市']), num_2017)], "china")  # 添加数据
map0.render("map0.html")  # 导出地图


map1 = Map()
map1.set_global_opts(
        title_opts=opts.TitleOpts(title="全国各省份大学数量"),
        visualmap_opts=opts.VisualMapOpts(
                # 由于数据分布较为集中,线性无法形象反映,故设置为分段显示
                is_piecewise=True,
                # 自定义分段区间、描述和颜色
                pieces=[
                        {"min": 0, "max": 0, "label": "0所", "color": "#FFFFFF"}, 
                        {"min": 1, "max": 1, "label": "1所", "color": "#FFEBCD"},
                        {"min": 2, "max": 2, "label": "2所", "color": "#FFA07A"},
                        {"min": 3, "max": 5, "label": "3-5所", "color": "#EE5C42"},
                        {"min": 6, "max": 10, "label": "6-10所", "color": "#CD3333"},
                        {"min": 11, "max": 20, "label": "11-20所", "color": "#A52A2A"},
                        {"min": 21, "label": "20所以上", "color": "#8B0000"}  # 不指定 max,表示 max 为无穷大
                ]
        )
)
map1.add(
        "211&985大学数量",
        [list(z) for z in zip(list(df['省/市']), list(df['211&985大学数量']))],
        "china",
        is_map_symbol_show=False  # 不显示省会的小红点
)
map1.render("map1.html")


map2 = Map()
map2.set_global_opts(
        title_opts=opts.TitleOpts(title="全国各省份大学数量"),
        visualmap_opts=opts.VisualMapOpts(min_=0, max_=60)
)
map2.add("公办本科大学数量",
         [list(z) for z in zip(list(df['省/市']), list(df['公办本科大学数量']))],
         "china",
         is_map_symbol_show=False  # 不显示省会的小红点
)
map2.render("map2.html")

结果展示

map0


map1

map2

更新

最新版本v1.8.1并不兼容旧版本,请自行参考官网文档进行修改


文章作者: BoyInTheSun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 BoyInTheSun !
 上一篇
Scrapy实例————爬取链家二手房数据,并处理后存入csv Scrapy实例————爬取链家二手房数据,并处理后存入csv
目标通过Scrapy爬取链家二手房数据,地址 https://bj.lianjia.com/ershoufang/ ,并对爬取到的数据进行处理,存储到csv文件中。 环境博主是在Windows平台使用PyCharm基于Python 3.7和
2020-05-14
下一篇 
Windows启动pycharm报错:Failed to load JVM DLL Windows启动pycharm报错:Failed to load JVM DLL
Failed to load JVM DLL C:\Program Files\JetBrain.s\PyCharm Community Edition 2020.1.1\jbr\ \bin\server\jvm.dll If you already have a 64-bit JDK installed, define a JAVA_ HOME variable in Computer > System Properties > System Settings > Environment Variables.
2020-05-08
  目录