赞
踩
json :是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据(就是字符串)
Python语言使用JSON有很大优势,因为JSON无非就是一个单独的字典或一个内部元素都是字典的列表
所以JSON可以直接和Python的字典或列表进行无缝转换
2.json格式数据转化
通过 json.dumps(data) 方法把python数据转化为了 json数据data = json.dumps(data)
如果有中文可以带上:ensure ascii=False参数来确保中文正常转换
通过json.loads(data) 方法把josn数据转化为了 python列表或字典
data = json.loads(data)
- """
- JSON数据和Python字典的相互转换
- """
- import json
- # 准备列表列表内每一个元素都是字典,将其转换为JSON
- data = [{"name":"zhangsan","age":12},{"name":"lisi","age":13},{"name":"wangwu","age":"14"}]
- json_str = json.dumps(data) # 若有中文可用ensure_ascii=False
- print(type(json_str))
- print(json_str)
- # 准备字典,将字典转换为JSON
- d = {"zhangsan":"嫌疑人","lisi":"受害者"}
- json_str = json.dumps(data,ensure_ascii=False) # 若有中文可用ensure_ascii=False
- print(type(json_str))
- print(json_str)
- # 将JSON字符串转换为Python数据类型[{k:v,k:v},{k:v,k:v}]
- s = '[{"name":"zhangsan","age":12},{"name":"lisi","age":13},{"name":"wangwu","age":"14"}]'
- l = json.loads(s)
- print(type(l))
- print(l)
- # 将JSON字符串转换为Python数据类型{k:v,k:v}
- s = '{"zhangsan":"嫌疑人","lisi":"受害者"}'
- d = json.loads(s)
- print(type(d))
- print(d)
'运行
- <class 'str'>
- [{"name": "zhangsan", "age": 12}, {"name": "lisi", "age": 13}, {"name": "wangwu", "age": "14"}]
- <class 'str'>
- [{"name": "zhangsan", "age": 12}, {"name": "lisi", "age": 13}, {"name": "wangwu", "age": "14"}]
- <class 'list'>
- [{'name': 'zhangsan', 'age': 12}, {'name': 'lisi', 'age': 13}, {'name': 'wangwu', 'age': '14'}]
- <class 'dict'>
- {'zhangsan': '嫌疑人', 'lisi': '受害者'}
Echarts框架的Python版本:pyecharts包
pip install pyecharts
打开官方画廊:
https://gallery.pyecharts.org/#/README
全局配置选项
系列配置选项
配置图表的标题
配置图例
配置鼠标移动效果
配置工具栏
等整体配置项
- """
- pyecharts的基础入门
- """
- # 导包
- import os
- 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])
- # 通过render方法,将代码生成为图像
- line.render()
-
- # 设置全局配置项
- line.set_global_opts(
- title_opts=TitleOpts(title="GDP展示",pos_left="center",pos_bottom="1%"),
- legend_opts=LegendOpts(is_show=True),
- toolbox_opts=ToolboxOpts(is_show=True),
- visualmap_opts=VisualMapOpts(is_show=True)
- )
- # 通过render方法,将代码生成为图像
- line.render()
- os.system("render.html") # 直接打开网页
*import os...............os.system("render.html")直接打开网页
- """
- 演示可视化需求1,折线图开发
- """
- import os
- import json
- from pyecharts.charts import Line
- from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts,LabelOpts
-
-
- # 处理数据
- f_us = open("D:/BaiduNetdiskDownload/资料/可视化案例数据/折线图数据/美国.txt","r",encoding="UTF-8")
- us_data = f_us.read() # 读取美国的全部内容
- f_jp = open("D:/BaiduNetdiskDownload/资料/可视化案例数据/折线图数据/日本.txt","r",encoding="UTF-8")
- jp_data = f_jp.read() # 读取日本的全部内容
- f_in = open("D:/BaiduNetdiskDownload/资料/可视化案例数据/折线图数据/印度.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)
-
- # 获取日期数据,用于x轴,取到2020年底(到314下标结束)
- us_x_data = us_dict['data'][0]['trend']['updateDate'][:314]
- jp_x_data = jp_dict['data'][0]['trend']['updateDate'][:314]
- in_x_data = in_dict['data'][0]['trend']['updateDate'][:314]
-
- # 获取日期数据,用于y轴,
- us_y_data = us_dict['data'][0]['trend']['list'][0]['data'][:314]
- jp_y_data = jp_dict['data'][0]['trend']['list'][0]['data'][:314]
- in_y_data = in_dict['data'][0]['trend']['list'][0]['data'][:314]
-
- # 生成图表
- line = Line() # 构建折线图对象
- # 添加x轴数据
- line.add_xaxis(us_x_data)
- # 添加y轴数据
- line.add_yaxis("美国确诊人数",us_y_data,label_opts=LegendOpts(is_show=False)) # 添加美国的y轴数据
- line.add_yaxis("日本确诊人数",jp_y_data,label_opts=LegendOpts(is_show=False)) # 添加日本的y轴数据
- line.add_yaxis("印度确诊人数",in_y_data,label_opts=LegendOpts(is_show=False)) # 添加印度的y轴数据
- # 设置全局配置项
- line.set_global_opts(
- title_opts=TitleOpts(title="2022.2-12美日印三国疫情数量增长折线图",pos_left="center",pos_bottom="1%"),
- legend_opts=LegendOpts(is_show=True),
- toolbox_opts=ToolboxOpts(is_show=True),
- visualmap_opts=VisualMapOpts(is_show=True)
- )
- # 调用render方法,生成图标
- line.render()
- os.system("render.html")
- # 关闭文件对象
- f_us.close()
- f_jp.close()
- f_jp.close()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。