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()
相关推荐
萧鼎1 小时前
【Python】高效数据处理:使用Dask处理大规模数据
开发语言·python
互联网杂货铺1 小时前
Python测试框架—pytest详解
自动化测试·软件测试·python·测试工具·测试用例·pytest·1024程序员节
Ellie陈1 小时前
Java已死,大模型才是未来?
java·开发语言·前端·后端·python
菜鸟的人工智能之路1 小时前
ROC 曲线:医学研究中的得力助手
python·数据分析·健康医疗
梦幻精灵_cq2 小时前
python包结构模块如何有效传递数据?
python
黑叶白树2 小时前
包和模块(上) python复习笔记
开发语言·笔记·python
铁盒薄荷糖3 小时前
【Pytorch】Pytorch的安装
人工智能·pytorch·python
yyfhq3 小时前
rescorediff
python·深度学习·机器学习
糊涂君-Q3 小时前
Python小白学习教程从入门到入坑------第十九课 异常模块与包【下】(语法基础)
开发语言·python·学习·程序人生·改行学it
API199701081103 小时前
京东平台接口技术详解及示例代码
开发语言·前端·python