day06_数据可视化
Map_地图
基础地图
知识点:
制作地图步骤:
1.导包
2.创建对象
3.添加数据,设置格式
4.设置全局选项
5.渲染页面
基础示例:
# 1.导包
from pyecharts.charts import Map
import pyecharts.options as opts
# 2.创建对象
map = Map()
# 3.给对象添加数据,设置格式
# 先准备数据
data = [('北京市', 499), ('上海市', 399), ('广东省', 299), ('台湾省', 199)]
# 再添加数据
map.add('疫情数据', data, 'china')
# 4.设置标题
map.set_global_opts(title_opts=opts.TitleOpts(title='全国疫情确诊数据', subtitle='测试数据'))
# 5.渲染页面
map.render('my_map.html')
实战练习:
知识点:
使用视觉映射: visualmap_opts=opts.VisualMapOpts(max_=500, is_piecewise=True) 注意: is_piecewise开启分段
自定义模块: 自己可以创建一个满足标识符规则的模块,模块中定义具有特定功能的函数
导入模块: 在其他py文件中可以导入模块
方式1: import 模块名 注意: 此种方式使用函数的时候,需要: 模块名.函数名()
方式2: from 模块名 import 函数名 注意: 此种方式可以直接使用函数名()
自定义模块:
# 读取文件中的列表,并且把字符串类型转为列表本身
def read_file(file_name, file_mode='r', encod='utf8'):
with open(file_name, file_mode, encoding=encod) as f:
str_data = f.read()
list_data = eval(str_data)
return list_data
# 写列表数据到文件中
def write_file(file_name, data: list, file_mode, encod='utf8'):
with open(file_name, file_mode, encoding=encod) as f:
f.write(str(data))
制作中国地图
data1.txt文件内容
[
('北京市', 499), ('上海市', 455), ('广东省', 399), ('台湾省', 319),
('新疆维吾尔自治区', 299), ('西藏自治区', 388), ('青海省', 251), ('四川省', 199),
('内蒙古自治区', 300), ('黑龙江省', 200), ('辽宁省', 51), ('山东省', 99),
('山西省', 500), ('河南省', 400), ('湖北省', 251), ('湖南省', 199)
]
python代码示例
"""
需求: 已知每个城市的疫情确诊数据(仅用于测试)在data1.txt文件中,要求制作地图展示
"""
# 1.导包
from pyecharts.charts import Map
import pyecharts.options as opts
import 文件操作
# 2.创建对象
map = Map(init_opts=opts.InitOpts(width='1200px', height='600px'))
# 3.给对象添加数据,设置格式
# 先读取数据
list_data = 文件操作.read_file('data1.txt')
# 再添加数据
map.add('疫情数据', list_data, 'china')
# 4.设置标题
map.set_global_opts(
title_opts=opts.TitleOpts(title='全国疫情确诊数据', subtitle='测试数据'),
visualmap_opts=opts.VisualMapOpts(max_=500, is_piecewise=True)
)
# 5.渲染页面
map.render('my_china_map.html')
制作区域地图
data2.txt文件内容
[
('张家口市', 499), ('承德市', 455), ('秦皇岛市', 399), ('唐山市', 319),
('保定市', 299), ('沧州市', 388), ('石家庄市', 251), ('衡水市', 199),
('邢台市', 300), ('邯郸市', 200), ('廊坊市', 200)
]
python代码示例
"""
需求: 已知每个城市的疫情确诊数据(仅用于测试)在data2.txt文件中,要求制作地图展示
"""
# 1.导包
from pyecharts.charts import Map
import pyecharts.options as opts
from 文件操作 import read_file
# 2.创建对象
map = Map(init_opts=opts.InitOpts(width='1200px', height='600px'))
# 3.给对象添加数据,设置格式
# 先读取数据
list_data = read_file('data2.txt')
# 再添加数据
map.add('疫情数据', list_data, '河北')
# 4.设置标题
map.set_global_opts(
title_opts=opts.TitleOpts(title='河北疫情确诊数据', subtitle='测试数据'),
visualmap_opts=opts.VisualMapOpts(max_=500, is_piecewise=True)
)
# 5.渲染页面
map.render('my_hebei_map.html')
Line_折线图
基础折线图
制作折线图步骤:
1.导包
2.创建对象
3.添加数据,设置格式
4.设置全局选项
5.渲染页面
# 1.导包
from pyecharts.charts import Line
import pyecharts.options as opts
# 2.创建对象
line = Line(init_opts=opts.InitOpts(width='1500px', height='800px'))
# 3.添加数据(x和y轴)
line.add_xaxis(['中国', '俄罗斯', '美国', '以色列', '巴勒斯坦'])
line.add_yaxis('测试数据', [100, 80, 70, 55, 10])
# 4.设置全局选项
line.set_global_opts(
title_opts=opts.TitleOpts(title='各国数据折线图')
)
# 5.渲染
line.render('my_line.html')
实战练习:
data3.txt文件
['美国', '中国', '日本', '德国', '印度', '法国', '英国', '巴西', '意大利', '加拿大', '韩国', '俄罗斯', '澳大利亚', '西班牙', '墨西哥', '印度尼西亚', '土耳其', '荷兰', '阿根廷', '沙特阿拉伯', '瑞士', '瑞典', '波兰', '中国台湾', '尼日利亚', '比利时', '泰国', '奥地利', '伊朗', '阿闻酋']
['1422196.083', '1012428.039', '343713.027', '274194.69', '209939.037', '193665.99', '182526.729', '156491.937', '140629.02', '124157.418', '113141.196', '107592.723', '106206.744', '99838.011', '90679.092', '84033.684', '66331.041', '61970.9034', '49807.7496', '49540.449', '48807.5532', '42374.892', '41194.3686', '40703.5146', '38333.5491', '37004.2722', '34316.0979', '31036.6854', '29662.5546', '29029.0665']
python代码
"""
需求: 已知web服务器gdp.html页面中存储的每个国家名称以及对应的gdp数据
要求爬取数据(之前练习过,此处直接复制之前代码即可),制作折线图
"""
# 获取之前的爬取的数据
with open('data3.txt', 'r', encoding='utf8') as f:
big_str_data = f.readlines()
country_list_data = eval(big_str_data[0])
gdp_list_data = eval(big_str_data[1])
# 制作折线图
# 1.导包
from pyecharts.charts import Line
import pyecharts.options as opts
# 2.创建对象
line = Line(init_opts=opts.InitOpts(width='2000px',height='800px'))
# 3.添加数据(x,y轴分别添加)
line.add_xaxis(country_list_data[:10])
line.add_yaxis('gdp数据',gdp_list_data[:10])
# 4.设置全局选项
line.set_global_opts(
title_opts=opts.TitleOpts(title='2023各个国家GDP数据折线图')
)
# 5.渲染页面
line.render('my_gdp_line.html')
Bar_柱状图
基础柱状图
制作柱状图步骤:
1.导包
2.创建对象
3.添加数据,设置格式
4.设置全局选项
5.渲染页面
# 1.导包
from pyecharts.charts import Bar
import pyecharts.options as opts
# 2.创建对象
bar = Bar(init_opts=opts.InitOpts(width='1800px',height='800px'))
# 3.添加数据(x轴y轴)
bar.add_xaxis(['中国', '俄罗斯', '美国', '以色列', '巴勒斯坦'])
bar.add_yaxis('测试数据', [100, 80, 70, 55, 10])
# 4.设置全局选项
bar.set_global_opts(
title_opts=opts.TitleOpts(title='各个国家数据对比柱状图')
)
# 5.渲染页面
bar.render('my_bar.html')
反转以及主题设置
# 1.导包
from pyecharts.charts import Bar
import pyecharts.options as opts
from pyecharts.globals import ThemeType
# 2.创建对象
bar = Bar(init_opts=opts.InitOpts(width='1800px', height='800px', theme=ThemeType.SHINE))
# 3.添加数据(x轴y轴)
bar.add_xaxis(['中国', '俄罗斯', '美国', '以色列', '巴勒斯坦'])
bar.add_yaxis('测试数据1', [10, 80, 70, 55, 10], label_opts=opts.LabelOpts(position="right"))
bar.add_yaxis('测试数据2', [200, 60, 170, 155, 30], label_opts=opts.LabelOpts(position="right"))
bar.add_yaxis('测试数据3', [100, 160, 270, 80, 50], label_opts=opts.LabelOpts(position="right"))
# 4.设置全局选项
bar.set_global_opts(
title_opts=opts.TitleOpts(title='各个国家数据对比柱状图')
)
# 反转xy轴
bar.reversal_axis()
# 5.渲染页面
bar.render('my_bar.html')
Json数据
python数据转为json数据
知识点:
json简介: json是一个具有特定格式的字符串
导入json包: import json
python数据转为json数据: 变量接收json数据 = json.dumps(python数据,ensure_ascii=False)
注意: ensure_ascii=False解决中文编码问题
示例:
# 1.导包
import json
# 2.使用
# 定义字典
dict1 = {'name': '老王', 'age': 16}
print(dict1, type(dict1))
# python数据转为json数据
json1 = json.dumps(dict1, ensure_ascii=False)
print(json1, type(json1))
# 定义列表嵌套字典
list1 = [{'name': '老王', 'age': 16}, {'name': '老李', 'age': 18}]
print(list1, type(list1))
# python数据转为json数据
json2 = json.dumps(list1, ensure_ascii=False)
print(json2, type(json2))
json数据转为python数据
知识点:
json简介: json是一个具有特定格式的字符串
导入json包: import json
json数据转为python数据: 变量接收python数据 = json.loads(json数据)
json文件:
data4.json
{"name": "老王", "age": 16}
data5.txt
[{"name": "老王", "age": 16}, {"name": "老李", "age": 18}]
示例:
import json
# 读取json文件
# 读取的是类似字典格式的,所以转换后就是字典
with open('data4.json', 'r', encoding='utf8') as f:
json1 = f.read()
print(json1, type(json1))
# json数据转为python数据
dict1 = json.loads(json1)
print(dict1, type(dict1))
# 读取的是类似列表套字典格式的,所以转换后就是列表
with open('data5.json', 'r', encoding='utf8') as f:
json2 = f.read()
print(json2, type(json2))
# json数据转为python数据
list1 = json.loads(json2)
print(list1, type(list1))