Python学习 -- 数据可视化基础

57 阅读2分钟

一、JSON数据

1 定义

JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据。
JSON本质上是一个带有特定格式的字符串。

2 Python数据与Json数据的相互转换

# 导入json模块
import json 

# 准备符合格式json格式要求的python数据
data = [{"name":"tim","age":"20"},{"name":"jim","age":"21"}]

# 通过json.dumps(data)方法把python数据转换为json数据
data = json.dumps(data)

# 通过json.loads(data)方法吧json数据转换为python数据,字典或列表
data = json.loads(data)

二、pyecharts模块

1 模块导入

折线图示例:
    from pyecharts.charts import Line
    from pyecharts.options import TitleOpts, LegendOpts, ToolboxOpts, VisualMapOpts
学习参考:
    pyecharts官方文档:https://pyecharts.org/#/zh-cn/intro
    pyecharts画廊官方文档:https://gallery.pyecharts.org/#/README

2 全局配置

全局配置通过set_global_opts方法进行配置:
    语法:
        line.set_global_opts(
            # 标题设置
            title_opts = TitleOpts("测试",pos_left="center",pos_buttom="1%"),
            # 图例设置
            legend_opts = LengendOpts(is_show=True),
            # 工具箱设置
            toolbox_opts = ToolBoxOpts(is_show=True),
            # 视觉映射设置
            visualmao_opts = VisualMapOpts(is_show=True),
            # 提示框设置
            tooltip_opts = TooltipOpts(is_show=True),
            ····
        )
    详细参考pyecharts官方文档

3 疫情折线图案例

数据:

链接:pan.baidu.com/s/1uX83Ts4A… 提取码:43fk

代码:

import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LabelOpts
# 处理数据
us_f = open("../../数据资料\资料\可视化案例数据\折线图数据\美国.txt", "r", encoding="utf-8")
us_data = us_f.read()
jp_f = open("../../数据资料\资料\可视化案例数据\折线图数据\日本.txt", "r", encoding="utf-8")
jp_data = jp_f.read()
in_f = open("../../数据资料\资料\可视化案例数据\折线图数据\印度.txt", "r", encoding="utf-8")
in_data = in_f.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 数据转换为字典数据
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年数据
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年数据
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()
line.add_xaxis(us_x_data)  # x轴公用
line.add_yaxis("美国确诊人数:", us_y_data, label_opts=LabelOpts(is_show=False))
line.add_yaxis("日本确诊人数:", jp_y_data, label_opts=LabelOpts(is_show=False))
line.add_yaxis("印度确诊人数:", in_y_data, label_opts=LabelOpts(is_show=False))
line.set_global_opts(
    title_opts=TitleOpts(title="2020年美日印疫情折线图", pos_left="center", pos_bottom="1%")
)
line.render()
# 关闭文件
us_f.close()
jp_f.close()
in_f.close()

结果:

下载.png