Python数据可视化-折线图
一、JSON数据格式
1.1 什么是json
- JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据
- JSON本质上是一个带有特定格式的字符串
主要功能:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互
1.2 json有什么用
各种编程语言存储数据的容器不尽相同,在Python中有字典dict这样的数据类型, 而其它语言可能没有对应的字典。为了让不同的语言都能够相互通用的互相传递数据,JSON就是一种非常良好的中转数据格式。
1.3 json格式数据转化
# json数据的格式可以是: {"name":"admin","age":18} # 也可以是: [{"name":"admin","age":18},{"name":"root","age":16},{"name":"张三","age":20}]
1.4 Python数据和Json数据的相互转化
# 导入json模块 import json # 准备符合格式json格式要求的python数据 data = {{"name":"老王", "age":16},{"name":"张飒","age":24}} # 通过json.dumps(data)方法把python数据转化为了json数据 data = json.dumps(data) # 通过json.loads(data)方法把json数据转化为了python数据 data = json.loads(data)
1.5 总结
二、pyecharts模块介绍
3.1 pyecharts模块
概况:
Echarts是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图标设计,得到了众多开发者的认可,而python是富有表达力的语言,很适合用于数据处理,当数据分析遇到数据可视化时pyecharts就诞生了。
pyecharts模块安装:
pip命令即可快速安装PyEcharts模块
pip install pyecharts -i https://pypi.tuna.tsinghua.edu.cn/simple
3.2 总结
三、pyecharts快速入门
3.1 pyecharts入门
基础折线图
""" 演示pyecharts的基础入门 """ # 导包 from pyecharts.charts import Line from pyecharts.options import TitleOpts, LegendOpts, ToolboxOpts, VisualMapOpts # 创建一个折线图对象 line = Line() # 给折线图对象添加x轴的数据 line.add_xaxis(["中国", "美国", "日本"]) # 给折线图对象添加y轴的数据 line.add_yaxis("GDP", [30, 20, 10]) # 设置全局配置项set_global_opts来设置, line.set_global_opts( # pos_bottom: title 组件离容器下侧的距离。bottom的值可以是像 20 这样的具体像素值 # 可以是像 '20%' 这样相对于容器高宽的百分比。 title_opts=TitleOpts(title="GDP展示", pos_left="center", pos_bottom="1%"), legend_opts=LegendOpts(is_show=True), # 图例,默认就是True toolbox_opts=ToolboxOpts(is_show=True), # 工具箱 visualmap_opts=VisualMapOpts(is_show=True) # 视觉映射 ) # 通过render方法,将代码生成为图像 line.render()
效果:
3.2 pyecharts的配置选项
- 全局配置选项
- 系列配置选项
set_global_opts方法
这里全局配置选项可以通过set_global_opts方法来进行配置,相应的选项和选项的功能如下:
3.3 总结
四、数据处理
导入模块:
# 导入json模块 import json
对数据进行处理,让数据符合json格式:
# 把不符合json数据格式的 "jsonp_1629350871167_29498(" 去掉 data = data.replace("jsonp_1629350871167_29498(", "") # 把不符合json数据格式的 ");" 去掉 data = data[:-2] # 数据格式符合json格式后,对数据进行转化 data = json.loads(data) # 获取日本的疫情数据 data = data["data"][0]['trend’] # x1_data存放日期数据 x1_data = data['updateDate’] # y1_data存放人数数据 y1_data = data['list'][0]["data"] # 获取2020年的数据 x1_data = data['updateDate'][:314] # 获取2020年的数据 y1_data = data['list'][0]["data"][:314]
五、创建折线图
""" 演示可视化需求1:折线图开发 """ import json from pyecharts.charts import Line from pyecharts.options import TitleOpts, LabelOpts # 处理数据 f_us = open("美国.txt", "r", encoding="UTF-8") f_india = open("印度.txt", "r", encoding="UTF-8") f_japan = open("日本.txt", "r", encoding="UTF-8") us_data = f_us.read() india_data = f_india.read() japan_data = f_japan.read() # 去掉不合json规范的开头 us_data = us_data.replace("jsonp_1629344292311_69436(", "") india_data = india_data.replace("jsonp_1629350745930_63180(", "") japan_data = japan_data.replace("jsonp_1629350871167_29498(", "") # 去掉不合json规范的结尾 us_data = us_data[:-2] india_data = india_data[:-2] japan_data = japan_data[:-2] # json转python字典 us_dict = json.loads(us_data) india_dict = json.loads(india_data) japan_dict = json.loads(japan_data) # 获取trend key us_trend_data = us_dict['data'][0]['trend'] india_trend_data = india_dict['data'][0]['trend'] japan_trend_data = japan_dict['data'][0]['trend'] # 获取日期数据,用于x轴,取2020年(到314下标结束) us_x_data = us_trend_data['updateDate'][:314] india_x_data = india_trend_data['updateDate'][:314] japan_x_data = japan_trend_data['updateDate'][:314] # 获取确诊数据,用于y轴,取2020年(到314下标结束) us_y_data = us_trend_data['list'][0]['data'][:314] india_y_data = india_trend_data['list'][0]['data'][:314] japan_y_data = japan_trend_data['list'][0]['data'][:314] # 生成图表 line = Line() # 构建折线图对象 # 添加x轴数据 line.add_xaxis(us_x_data) # x轴是公用的,所以使用一个国家的数据即可 # 添加y轴数据 line.add_yaxis("美国确诊人数", us_y_data, label_opts=LabelOpts(is_show=False)) line.add_yaxis("印度确诊人数", india_y_data, label_opts=LabelOpts(is_show=False)) line.add_yaxis("日本确诊人数", japan_y_data, label_opts=LabelOpts(is_show=False)) # 设置全局选项 line.set_global_opts( # 标题设置 title_opts=TitleOpts(title="2020年美日印三国确诊人数对比折线图", pos_left="center", pos_bottom="1%") ) # 调用render方法,生成图表 line.render() # 关闭文件对象 f_us.close()
实现效果如下: