python基础综合案例(数据可视化—折线图可视化)

可视化案例的学习目标:

·通过案例,回忆巩固python基础的语法

·锻炼编程能力,熟练语法的使用

1.json数据格式

两种不同的语言由于数据格式不同,所以没有办法直接沟通,就比如我们可以将python

的数据格式转成json,然后把json给c

json的主要功能其实就是不同语言之间的中转站

json其实就是一个python的列表,或者说是一个python的字典

中文的转换会涉及一个编码问题,只需要输入一个参数 ensure_ascii就行

复制代码
ensure_ascii=False 这个意思就是不使用ASCII来转换它,而是把它内容直接输出出去

总结:

·json:是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据(就是字符串)

·python语言使用json有很大的优势,因为:json无非就是一个独立的字典或一个内部元素都是字典的列表,所以json可以直接和python的字典或列表进行无缝转换

·通过json.dumps(data)方法把python数据转化为了json数据,如果有中文可以带上:ensure_ascii=False参数来确保中文正常转换

·通过json.loads(data)方法把json数据转化为了python列表或字典

2.pyecharts模块介绍

pyecharts模块介绍

pyecharts的本体就是Echarts的框架,Echarts框架的python版本:PyEcharts包

他的官网是pyecharts.org

其实它还有一个画廊的功能,官方画廊的网址是http://gallery.pyecharts.org

它的功能就是产生各种各样的图表,可以在上面查看自己想要的图标代码

最下面也会有相应的预览效果图,支持放大缩小观看

除此以外还有各种各样的图标,大感兴趣的自行搜索

pyecharts模块安装

输入 pip install pyecharts回车即可下载,下载完成以后可以输入python,切换到python环境中,然后输入import pyecharts,如果没有出现问题就是下载成功,可以正常使用了

3.pyecharts快速入门

基础折线图

输入代码后你会发现没有然后输出,但是你发现左边多了一个render.html的文件

打开它你会发现出现了一堆代码,这些代码只有在浏览器中才可以查看

点击右上角,选择你电脑有的浏览器,即可使用浏览器打开

这就是刚才所创建的折线图

配置选项

全局变量就是针对我们整个图像来去进行设置,比如说图像的标题,图像的图例,工具箱等等。

全局配置项能做什么?

·配置图表的标题

·配置图例

·配置鼠标移动效果

·配置工具栏

·等整体配置项

系列配置其实就是针对我们具体的轴数据进行配置,比如说针对我们y轴的这个数据,去进行相关个性化的配置

全局变量就是针对这些通用的变量去设置

ctrl p 可以查看参数

复制代码
line.set_global_opts(
    title_opts=TitleOpts(title = "GDP展示",pos_left="center",pos_bottom="1%")
)

这一段代码是针对折线图标题的控制,title是标题名字,pos_left表示标题距离左边有多远,pos_bottom表示距离底部有多远,center表示中心的意思

复制代码
from pyecharts.options import  TitleOpts

这一段代码是对标题模块的导入

效果展示:

import导入可以使用逗号,输入多个模块名

这些是一部分具体演示,大家可以反复琢磨,不理解的同学,可以去参考pyecharts首页,点击全局配置项即可查看具体用法

4.数据处理

大家想要处理数据,使得数据看起来更简单,可以使用这个网址,进行数据处理

JSON在线视图查看器(Online JSON Viewer)

点击json视图,然后输入数据。

这里我以自己的非常多的一个数据为例给大家演示。

{"status":0,"msg":"success","data":[{"name":"美国","trend":{"updateDate":["2.22","2.23","2.24","2.25","2.26","2.27","2.28","2.29","3.1","3.2","3.3","3.4","3.5","3.6","3.7","3.8","3.9","3.10","3.11","3.12","3.13","3.14","3.15","3.16","3.17","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25",......382,63297,39060,35816,1275,66886,136179,96705,100870,55840,26529,128492,156048,133543,115438,144461,70266,24123,236918,115516,171448,142576,155334,70119,32695,271457,169842]}]}}]}

是不是还是有些太长了

点击视图,即可看到最简版,点击加号,里面逐层嵌套

由此可见,开头和结尾这两部分不符合json的规范,将他替换成空字符,也就是删掉它

当我们把json格式转化为python,可以使用这个例子来演示一下,如果运行不报错,那就是没有问题

仔细观察一下这个层级关系,可以直接取到trend里面,简化数据

我们只取2020年的数据

这样找层级关系

写两步就print运行看看是否正确

5.创建折线图

目标:通过pyecharts完成美日印三国疫情折线图

相信大家应该已经掌握了折线图的制作流程,接下来直接上代码

复制代码
label_opts=LabelOpts(is_show=False)

这个代码可以让折线统计图上的数字不显示出来

复制代码
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LabelOpts
# 处理数据
f_us = open("D:/美国.txt","r",encoding="UTF-8")
us_data = f_us.read()  # 美国的全部内容

f_jp = open("D:/日本.txt","r",encoding="UTF-8")
jp_data = f_jp.read()  # 日本的全部内容

f_in = open("D:/印度.txt","r",encoding="UTF-8")
in_data = f_in.read()  # 印度的全部内容
# 去除不合json规范的开头
us_data = us_data.replace("jsonp_1629344292311_69436(","")
jp_data = jp_data.replace("jsonp_1629350871167_29498(","")
in_data = in_data.replace("jsonp_1629350745930_63180(","")
# 去掉不合json规范的结尾
us_data = us_data[:-2]
jp_data = jp_data[:-2]
in_data = in_data[:-2]  # 从头开始取,取到倒数第二个,不包含倒数第二个

# json转python字典
us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)
# 获取trend key
us_trend_data = us_dict['data'][0]['trend']
jp_trend_data = jp_dict['data'][0]['trend']
in_trend_data = in_dict['data'][0]['trend']
# 获取日期数据、用于x轴,取2020年(到314下标结束)
us_x_data = us_trend_data['updateDate'][:314]
jp_x_data = jp_trend_data['updateDate'][:314]
in_x_data = in_trend_data['updateDate'][:314]
# 获取确认数据,用于y轴,取2020年(到314下标结束)
us_y_data = us_trend_data['list'][0]['data'][:314]
jp_y_data = jp_trend_data['list'][0]['data'][:314]
in_y_data = in_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))   # 添加美国的y轴数据
line.add_yaxis("日本确诊人数",jp_y_data,label_opts=LabelOpts(is_show=False))   # 添加日本的y轴数据
line.add_yaxis("印度确诊人数",in_y_data,label_opts=LabelOpts(is_show=False))   # 添加印度的y轴数据
# 设置全局选项
line.set_global_opts(
    # 标题设置
    title_opts=TitleOpts(title="2020年美日印三国确诊人数对比折线图",pos_left="center",pos_bottom="1%")
)

# 调用render方法,生成图表
line.render()
# 关闭文件对象
f_us.close()
f_jp.close()
f_in.close()
相关推荐
databook4 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar5 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户8356290780515 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_5 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
RestCloud5 小时前
数据传输中的三大难题,ETL 平台是如何解决的?
数据分析·api
数据智能老司机12 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机13 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机13 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机13 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i13 小时前
drf初步梳理
python·django