0°

使用 pyecharts 绘制中国大学的地域分布图

依赖

pip install fire pandas pyecharts

数据

源数据

2019年全国高等学校名单 – 中华人民共和国教育部政府门户网站

整理后

university.txt:大学名称 + 城市(以制表符分隔)。

阿坝师范学院  阿坝藏族羌族自治州
阿坝职业学院  阿坝藏族羌族自治州
阿克苏职业技术学院   阿克苏地区
新疆理工学院  阿克苏地区
塔里木大学   阿拉尔市
.......
遵义师范学院  遵义市
遵义医科大学  遵义市
遵义医科大学医学与科技学院   遵义市
遵义医药高等专科学校  遵义市
遵义职业技术学院    遵义市

用法

python main.py TYPE [FILE]
# 或
python main.py --type TYPE [--file FILE]

示例

# 散点图
python main scatter
# 热图
python main heatmap

结果

university.html:可以通过点击,放大,或拖动调整左下角的颜色条来查看细节。

散点图

热图

main.py

import fire
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.datasets import COORDINATES
def geo(cities, values, type) -> Geo:
    return (
        Geo()
        .add_schema(maptype="china")
        .add(
            "",
            [(c, v) for c, v in zip(cities, values) if c in COORDINATES],
            type_=type,
            symbol_size=5,
        )
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            visualmap_opts=opts.VisualMapOpts(min_=1, max_=50),
            title_opts=opts.TitleOpts(title="中国大学分布图"),
        )
    )
def load_data(file):
    data = pd.read_csv(file, sep="\t", header=None, encoding="utf-8")
    data.columns = ("university", "city")
    return data
def main(type, file="university.txt"):
    data = load_data(file)
    counter = data.city.value_counts()
    cities = [str(x) for x in counter.index.values]
    values = [int(x) for x in counter.values]
    c = geo(cities, values, type)
    c.width = "1200px"
    c.height = "900px"
    c.render("university.html")
if __name__ == "__main__":
    fire.Fire(main)

登山赛车下载
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!