黑马程序员|8天Python第10章数据折线图可视化案例


一 json 数据格式

1.什么是json

json 是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据(就是字符串)。Python 语言使用JSON 有很大优势,因为 JSON 无非就是一个单独的字典或一个内部元素都是字典的列表,所以JSON 可以直接和 Python 的字典或列表进行无缝转换。

2.json的作用

3.json格式数据转化

字典,列表内部嵌套字典。

4.python数据和json数据的相互转化

 

设置 False 表明不使用 ASCII 去转换,而是直接转换出去。


二 pyecharts

1.概述

 

2.官方示例:

 

里面有很多图表的效果图,并且有参考代码,换个数据即可。 

3.安装 

4.案例

文件操作:通过open()得到一个文件对象。这里是通过Line()得到一个折线图的对象。有了空的 x 轴和 y 轴。

5.有哪些配置项

全局配置选项:图像的标题,图例等。和图表类型无关。通用的配置。

系列配置选项:具体的轴数据等。

set_global_opts 方法 

title_opts = 关键字传参,传一个标题相关的功能对象。

前面 from pyecharts.charts import Line 导入了折线图对象。

要构建标题相关的功能对象就还要去导包 from pyecharts.options import TitleOpts。

TitleOpts 就是标题的控制选项。

pos  :position 靠近左边有多远,靠近底部有多远。

图例 legend | from pyecharts.options import TitleOpts,LegendOpts。

工具箱 toolbox | from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts。

视觉映射 visualmap | from.........,VisualMapOpts。

工具提示 tooltip

不用特别记,要用的时候上pyecharts网页即可。

官方文档:

全局配置项 - pyecharts - A Python Echarts Plotting Library built with love.全局配置项 - pyecharts - A Python Echarts Plotting Library built with love.

全局配置项 - pyecharts - A Python Echarts Plotting Library built with love.

 

全局配置项能做什么


三 数据处理

本质是个json文件,但是开头不符合规范,通过代码处理掉。

都去掉后,可以通过第三方工具快速查看格式。

173软件站-专业绿色手游攻略资讯懒人手机软件app下载平台JSON着色工具-json数据着色-懒人工具|www.ab173.com

173软件站-专业绿色手游攻略资讯懒人手机软件app下载平台

这个是value和value对应,2.21是updateDate的值中的第一个,和data的值中的第一个对应,他们的key还不是同一层的,看上去就非常乱。

JSON在线解析及格式化验证 - JSON中文网 

步骤1: 先取到 trend 这个 key ,先拿到框框里面的这些 value 。

data(key)里面取到的是一个列表,列表里面只有一个字典元素,再取里面字典的 trend 键即可。

 步骤2:取2020年这一年就就好了。

步骤3:拿到确诊数据作为 y 轴。 

步骤4:相同方法处理日本和印度的数据。

import json

# 处理数据
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() # 印度的全部内容

#去掉开头
US_data = US_data.replace("jsonp_1629344292311_69436("," ")
JP_data = JP_data.replace("jsonp_1629350871167_29498("," ")
IN_data = IN_data.replace("jsonp_1629350745930_63180("," ")
#去掉结尾
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] # 不包括314
JP_x_data = JP_trend_data["updateDate"][:315] # 不包括315
IN_x_data = IN_trend_data["updateDate"][:269] # 不包括269
# 获取确诊数据,用于y轴,取2020年(到314下标结束)
US_y_data = US_trend_data["list"][0]["data"][:314] #这个数据和日期是一一对应的
JP_y_data = JP_trend_data["list"][0]["data"][:315]
IN_y_data = IN_trend_data["list"][0]["data"][:269]


四 创建折线图

1.导入模块

2.折线图相关配置项 

 

3.全局配置项

使用前要导包。


五 总结

import json
from pyecharts.charts import Line

# 处理数据
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() # 印度的全部内容

#去掉开头
US_data = US_data.replace("jsonp_1629344292311_69436("," ")
JP_data = JP_data.replace("jsonp_1629350871167_29498("," ")
IN_data = IN_data.replace("jsonp_1629350745930_63180("," ")
#去掉结尾
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] # 不包括314
JP_x_data = JP_trend_data["updateDate"][:315] # 不包括315
IN_x_data = IN_trend_data["updateDate"][:269] # 不包括269

# 获取确诊数据,用于y轴,取2020年(到314下标结束)
US_y_data = US_trend_data["list"][0]["data"][:314] #这个数据和日期是一一对应的
JP_y_data = JP_trend_data["list"][0]["data"][:315]
IN_y_data = IN_trend_data["list"][0]["data"][:269]

# 生成图表
line = Line()  # 构建折线图对象
# 添加x轴数据 x轴是公用的,使用一个国家的x轴数据即可
line.add_xaxis(US_x_data)
# 添加y轴数据
line.add_yaxis("美国确诊人数",US_y_data) # 美国的y轴数据
line.add_yaxis("日本确诊人数",JP_y_data) # 日本的y轴数据
line.add_yaxis("印度确诊人数",IN_y_data) # 印度的y轴数据
# 调用render方法生成图表
line.render()
#关闭文件
f_us.close()
f_jp.close()
f_in.close()

 

在生成图标render之前进行全局配置。

标题设置:

 

 

数字太乱:设置 y 轴的属性。

 

  • 28
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值