python-json数据、pyecharts的入门使用(折线图)

目录

1.  json数据格式

 1.1  json.dumps()

1.2  json.loads()

2.  pyecharts的入门使用(折线图)

2.1   pyecharts使用的简单示例

2.1.1  导包

2.1.2  创建对象

2.1.3  添加x轴数据

2.1.4  添加y轴数据

2.1.5  设置全局配置项

2.1.6  render()方法,生成图像

3.  折线图开发示例


1.  json数据格式

JSON是一种轻量级的数据交换格式,它基于文本,具有易于阅读和编写的特性,同时也被广泛用于存储和传输数据

具体来说,JSON数据格式有以下几个特点:

  • 易于解析:与XML相比,JSON的解析更为简单和快速,因为它是基于文本的,可以被JavaScript原生支持,并且大多数编程语言都有解析JSON的库。
  • 结构紧凑:JSON数据结构紧凑,占用的空间小,这使得它在网络传输时更加高效。
  • 可读性强:JSON的可读性很强,它的设计初衷之一就是便于人类阅读和编写。
  • 兼容性好:JSON可以在不同的平台和语言之间进行数据交换,而不受特定语言或平台的限制。

 1.1  json.dumps()

将数据转换为json格式

# 准备列表,列表内每一个元素都是字典,将其转换为JSON
data = [{"name":"张大山","age":11}, {"name":"王大锤","age":13}, {"name":"赵小虎","age":16}]
json_str = json.dumps(data, ensure_ascii=False)
print(type(json_str))
print(json_str)
# 准备字典,将字典转换为JSON
d = {"name":"周节伦", "addr":"台北"}
json_str2 = json.dumps(d, ensure_ascii=False)
print(json_str2)

 运行如下:

1.2  json.loads()

将json()字符串转换为python数据类型

# 将json字符串转换为python数据类型,[{k:v, k:v}, {k:v, k:v}]
s = '[{"name": "张大山", "age": 11}, {"name": "王大锤", "age": 13}, {"name": "赵小虎", "age": 16}]'
l = json.loads(s)
print(l)
# 将json字符串转换为python数据类型{k:v, k:v}
s = '{"name": "周杰伦", "addr": "台北"}'
l = json.loads(s)
print(l)

2.  pyecharts的入门使用(折线图)

Pyecharts是一个基于ECharts的Python数据可视化库,它允许用户通过Python代码轻松生成丰富的交互式图表。以下是关于pyecharts的详细介绍:

  • 基本概念:Pyecharts是为了让Python开发者能够利用ECharts的强大功能来创建美观的数据可视化图表。ECharts是一个由百度开源的商业级数据图表库,它提供了多种图表类型和丰富的交互性功能。
  • 安装方法:安装pyecharts相对简单,可以通过pip命令进行安装,使得Python用户可以快速开始使用这个库。
  • 图表类型:Pyecharts支持多种图表类型,包括柱形图、折线图、饼图等,满足不同的数据展示需求。它还提供了一些特殊的图表类型,如词云和可视化地图,这些是其他库如matplotlib和seaborn不支持的。
  • 配置选项:Pyecharts提供了丰富的配置选项,用户可以根据自己的需求定制图表的颜色、标签、图例等元素。此外,它还支持链式调用和多种主题选择,使得创建图表的过程更加直观和灵活。
  • 示例代码:Pyecharts的官方文档中包含了许多示例代码,这些示例涵盖了从基本图表到复杂图表的绘制过程,帮助用户快速学习和使用这个库。
  • 优点:相比其他数据可视化库,pyecharts的操作更加简洁,API设计友好,即使是没有前端开发经验的Python开发者也能快速上手。它的图表具有可交互性,可以提升数据展示的效果,并且可以轻松移植到PPT等演示文稿中。

2.1   pyecharts使用的简单示例

2.1.1  导包

# 导包
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts, VisualMapOpts

2.1.2  创建对象

# 创建一个折线图对象
line = Line()

2.1.3  添加x轴数据

# 给折线图对象添加X轴都得数据
line.add_xaxis(["中国", "美国", "英国"])

2.1.4  添加y轴数据

# 给折线图对象添加y轴都得数据
line.add_yaxis("GDP", [30,20,10])

2.1.5  设置全局配置项

line.set_global_opts 是 pyecharts 库中用于设置全局配置项的方法。它接收一个名为 opts 的参数,该参数是一个字典,包含了各种全局配置选项。以下是一些常用的全局配置选项:

  1. title_opts:设置图表标题的配置项,如标题文本、字体大小等。
  2. tooltip_opts:设置提示框的配置项,如触发类型、格式化函数等。
  3. legend_opts:设置图例的配置项,如图例位置、布局方式等。
  4. xaxis_opts:设置 x 轴的配置项,如坐标轴类型、刻度间隔等。
  5. yaxis_opts:设置 y 轴的配置项,如坐标轴类型、刻度间隔等。
  6. datazoom_opts:设置数据区域缩放组件的配置项,如启用状态、缩放范围等。
  7. visualmap_opts:设置视觉映射组件的配置项,如颜色映射范围、颜色映射类型等。
  8. toolbox_opts:设置工具箱组件的配置项,如启用状态、功能列表等。
  9. brush_opts:设置刷子组件的配置项,如刷子类型、刷子形状等。
# 设置全局配置项
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)  # 视觉映射
)

2.1.6  render()方法,生成图像

# 通过render方法,将代码生成为图像

line.render()

3.  折线图开发示例

通过读取已有数据文件,制作2020年美日印三国疫情确诊人数对比折线图

美日印数据展示如下:

通过解析json数据,数据的结构如下:

"""
演示可视化开发,折线图开发
"""
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts, VisualMapOpts, LabelOpts

# 处理数据
f_us = open("D:\pydaima\8day速成python\shuju\美国.txt", "r", encoding="UTF-8")
us_data = f_us.read()      # 读取到美国的全部内容,赋值给us_data
f_jp = open("D:\pydaima\8day速成python\shuju\日本.txt", "r", encoding="UTF-8")
jp_data = f_jp.read()      # 读取到日本的全部内容,赋值给jp_data
f_in = open("D:\pydaima\8day速成python\shuju\印度.txt", "r", encoding="UTF-8")
in_data = f_in.read()      # 读取到印度的全部内容,赋值给in_data

# 去掉不合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轴对象,x轴是共用的,添加一个x轴即可
line.add_xaxis(us_x_data)
# 添加y轴数据
line.add_yaxis("美国确诊人数", us_y_data, label_opts=LabelOpts(is_show=False))     # 添加美国的y轴数据,label_opts使生成图表不显示数据
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("示例.html")

f_us.close()
f_jp.close()
f_in.close()

生成图像:

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值