python-pyecharts绘制折线图、地图-学习记录
·
黑马程序员-python学习
1. 绘制三国疫情折线图
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LabelOpts
def get_data(filename, header_cl):
"""
Parameters
----------
:header_cl: 用于去除不合json规范的开头
Returns
-------
:x_data: 日期数据,用于x轴, 取2020年
:y_data: 确认数据,用于y轴,取2020年
"""
f = open(filename, "r", encoding="UTF-8")
data = f.read() # 全部内容
# 去掉不合json规范的开头
data = data.replace(header_cl, "")
# 去掉不合json规范的结尾
data = data[:-2]
# json转python字典
data_dict = json.loads(data)
trend_data = data_dict['data'][0]['trend']
# 获取日期数据,用于x轴, 取2020年
x_data = trend_data['updateDate'][:314]
# 获取确认数据,用于y轴,取2020年
y_data = trend_data['list'][0]['data'][:314]
f.close() # 关闭文件对象
return x_data, y_data
f_us = open('第1-12章资料\资料\可视化案例数据\折线图数据\美国.txt', "r", encoding="UTF-8")
us_data = f_us.read() # 美国的全部内容
f_jp = open('第1-12章资料\资料\可视化案例数据\折线图数据\日本.txt', "r", encoding="UTF-8")
jp_data = f_jp.read() # 美国的全部内容
f_in = open('第1-12章资料\资料\可视化案例数据\折线图数据\印度.txt', "r", encoding="UTF-8")
in_data = f_in.read() # 美国的全部内容
f_us = '第1-12章资料\资料\可视化案例数据\折线图数据\美国.txt'
f_jp = '第1-12章资料\资料\可视化案例数据\折线图数据\日本.txt'
f_in = '第1-12章资料\资料\可视化案例数据\折线图数据\印度.txt'
header_us = "jsonp_1629344292311_69436("
header_jp = "jsonp_1629350871167_29498("
header_in = "jsonp_1629350745930_63180("
x_us, y_us = get_data(f_us, header_us)
x_jp, y_jp = get_data(f_jp, header_jp)
x_in, y_in = get_data(f_in, header_in)
# 生成图表
line = Line()
# 添加x数据
line.add_xaxis(x_us) # x轴是共用的
# 添加y数据
line.add_yaxis("美国确诊人数", y_us, label_opts=LabelOpts(is_show=False))
line.add_yaxis("日本确诊人数", y_jp, label_opts=LabelOpts(is_show=False))
line.add_yaxis("印度确诊人数", y_in, label_opts=LabelOpts(is_show=False))
# 设置全局选项
line.set_global_opts(
# 标题设置
title_opts=TitleOpts(title="2020年美日印三国确诊人数对比折线图", pos_left="center", pos_bottom="1%")
)
line.render()

2. 绘制中国各省份疫情情况地图
"""
全国疫情可视化地图
"""
import json
from pyecharts.charts import Map
from pyecharts.options import *
def province_name_tran(province_name):
"""
省份简称转换为全称
自治区:新疆维吾尔自治区、西藏自治区、内蒙古自治区、宁夏回族自治区、广西壮族自治区
直辖市:北京市、天津市、上海市、重庆市
特别行政区:香港特别行政区、澳门特别行政区
"""
province_mapping = {
"北京": "北京市",
"天津": "天津市",
"上海": "上海市",
"重庆": "重庆市",
"河北": "河北省",
"山西": "山西省",
"辽宁": "辽宁省",
"吉林": "吉林省",
"黑龙江": "黑龙江省",
"江苏": "江苏省",
"浙江": "浙江省",
"安徽": "安徽省",
"福建": "福建省",
"江西": "江西省",
"山东": "山东省",
"河南": "河南省",
"湖北": "湖北省",
"湖南": "湖南省",
"广东": "广东省",
"海南": "海南省",
"四川": "四川省",
"贵州": "贵州省",
"云南": "云南省",
"陕西": "陕西省",
"甘肃": "甘肃省",
"青海": "青海省",
"台湾": "台湾省",
"内蒙古": "内蒙古自治区",
"广西": "广西壮族自治区",
"西藏": "西藏自治区",
"宁夏": "宁夏回族自治区",
"新疆": "新疆维吾尔自治区",
"香港": "香港特别行政区",
"澳门": "澳门特别行政区"
}
return province_mapping.get(province_name)
f = open("第1-12章资料\资料\可视化案例数据\地图数据\疫情.txt", "r", encoding="UTF-8")
data = f.read() # 全部数据
f.close()
data_dict = json.loads(data) # json字符串转字典
province_data_list = data_dict["areaTree"][0]["children"] # 省份数据
# 元组 (省份名称,确诊人数)
data_list = [] # 绘图所用数据
for province_data in province_data_list:
province_name = province_data["name"]
province_name = province_name_tran(province_name) # 省份简称转换为全称
province_confirm = province_data["total"]["confirm"]
data_list.append((province_name, province_confirm))
# print(data_list)
# 创建地图对象
map = Map()
# 添加数据
map.add("各省份确诊人数", data_list, "china")
# 设置全局配置
map.set_global_opts(
title_opts=TitleOpts(title="全国疫情地图"),
visualmap_opts=VisualMapOpts(
is_show=True,
is_piecewise=True, # 是否分段
pieces=[
{"min": 1, "max":99, "label": "1-99人", "color": "#CCFFFF"},
{"min": 100, "max": 999, "label": "100-999人", "color": "#FFFF99"},
{"min": 1000, "max": 4999, "label": "1000-4999人", "color": "#FF9966"},
{"min": 5000, "max": 9999, "label": "5000-9999人", "color": "#FF6666"},
{"min": 10000, "max": 99999, "label": "10000-99999人", "color": "#CC3333"},
{"min": 100000, "label": "100000+", "color": "#990033"}
]
)
)
map.render("全国疫情地图.html")

3. 河南省疫情地图
"""
河南省疫情可视化地图
"""
import json
from pyecharts.charts import Map
from pyecharts.options import *
f = open("第1-12章资料\资料\可视化案例数据\地图数据\疫情.txt", "r", encoding="UTF-8")
data = f.read() # 全部数据
f.close()
data_dict = json.loads(data) # json字符串转字典
cities_data_list = data_dict["areaTree"][0]["children"][3]["children"] # 河南省数据
# 元组 (城市名称,确诊人数)
data_list = [] # 绘图所用数据
for city_data in cities_data_list:
city_name = city_data["name"] + "市"
city_confirm = city_data["total"]["confirm"]
data_list.append((city_name, city_confirm))
# 手动添加济源市数据
data_list.append(("济源市", 5))
# print(data_list)
# 创建地图对象
map = Map()
# 添加数据
map.add("河南省疫情分布", data_list, "河南")
# 设置全局配置
map.set_global_opts(
title_opts=TitleOpts(title="河南省疫情地图"),
visualmap_opts=VisualMapOpts(
is_show=True,
is_piecewise=True, # 是否分段
pieces=[
{"min": 1, "max":99, "label": "1-99人", "color": "#CCFFFF"},
{"min": 100, "max": 999, "label": "100-999人", "color": "#FFFF99"},
{"min": 1000, "max": 4999, "label": "1000-4999人", "color": "#FF9966"},
{"min": 5000, "max": 9999, "label": "5000-9999人", "color": "#FF6666"},
{"min": 10000, "max": 99999, "label": "10000-99999人", "color": "#CC3333"},
{"min": 100000, "label": "100000+", "color": "#990033"}
]
)
)
map.render("河南省疫情地图.html")

更多推荐
所有评论(0)