Python初学者学习记录——python基础综合案例:数据可视化——折线图可视化

一、案例介绍

        效果一:2020年印美日新冠累计确诊人数

        效果二:全国疫情地图可视化

        效果三:动态GDP增长图

        数据来源:

        · 本案例数据全部来自《百度疫情实时大数据报告》,及公开的全球各国GDP数据

        使用的技术:

        · Echarts 是个百度开源的数据可视化,凭借着良好的交互性,精巧的图标设计,得到了众多开发者的认可,而Python 是门富有表达力的语言,很适合用于数据处理,当数据分析遇上数据可视化时pyecharts 诞生了。

二、json数据格式的转化

        1、什么是json

              · json是一种轻量级的数据交互格式。可以按照json指定的格式去组织和封装数据

              · json本质上是一个带有特定格式的字符串

              · 主要功能:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互,类似于:

                      · 国际通用语言——英语

                      · 中国56个民族不同地区的通用语言——普通话

        2、json有什么用

              · 各种编程语言存储数据的容器不尽相同,在Python中有字典dict这样的数据类型,而其它语言可能没有对应的字典。

              为了让不同的语言都能够相互传递数据,json就是一种非常良好的中转数据格式。如图,以Python和C语言互传数据为例:

              Python初学者学习记录——python基础综合案例:数据可视化——折线图可视化_第1张图片

        3、json格式数据转化

              · json格式的数据要求很严格,下面我们看一下它的要求

              Python初学者学习记录——python基础综合案例:数据可视化——折线图可视化_第2张图片

        4、Python数据和json数据的相互转化

              · Python数据和json数据的相互转化

              Python初学者学习记录——python基础综合案例:数据可视化——折线图可视化_第3张图片

# 导入json模块
import json

# 准备列表,列表内每一个元素都是字典,将其转换为json
data = [{"name": "老王", "age": 16}, {"name": "张三", "age": 20}]
json_str = json.dumps(data, ensure_ascii=False)  # 内容带中文的话,就使用ensure_ascii=False不让它使用ASCII去转化它
print(type(json_str))
print(json_str)

# 准备字典,将字典转化为json
data = {"name": "周杰伦", "addr": "台北"}
json_str = json.dumps(data, ensure_ascii=False)
print(type(json_str))
print(json_str)

# 通过json.loads(data)方法把json数据转化为了python列表数据
s = '[{"name": "老王", "age": 16}, {"name": "张三", "age": 20}]'
list = json.loads(s)
print(type(list))
print(list)

# 通过json.loads(data)方法把json数据转化为了python字典数据
s = '{"name": "周杰伦", "addr": "台北"}'
dict = json.loads(s)
print(type(dict))
print(dict)

 Python初学者学习记录——python基础综合案例:数据可视化——折线图可视化_第4张图片

三、pyecharts模块简介

        1、pyecharts模块

              · 如果想要做出数据可视化效果图,可以借助pyecharts模块来完成

              · 概况:

                 Echarts 是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可,而Python 是门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时pyecharts诞生了。

        2、开发可视化图表使用的技术是:

              Echarts框架的Python版本:PyEcharts包

        3、pyecharts模块安装

              pip install pyecharts

        4、如何查看官方示例

              打开官方画廊:https://gallery.pyecharts.org/#/README

四、pyecharts的入门使用

        1、pyecharts入门

              · 基础折线图

              Python初学者学习记录——python基础综合案例:数据可视化——折线图可视化_第5张图片

              Python初学者学习记录——python基础综合案例:数据可视化——折线图可视化_第6张图片

        2、pyecharts有哪些配置选项

              · pyecharts模块中有很多的配置选项,常用到2个类别的选项:

                      · 全局配置选项

                      · 系列配置选项

        3、set_global_opts方法

              · 这里全局配置选项可以通过set_global_opts方法来进行配置,相应的选项和选项的功能如下:

              Python初学者学习记录——python基础综合案例:数据可视化——折线图可视化_第7张图片

              Python初学者学习记录——python基础综合案例:数据可视化——折线图可视化_第8张图片

# 导包,导入Line功能构建折线图对象
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])

# 设置全局配置项,通过set_global_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)
)

# 通过render生成图表
line.render()

 Python初学者学习记录——python基础综合案例:数据可视化——折线图可视化_第9张图片

五、数据准备

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

# 去掉不合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]

六、生成折线图

import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LabelOpts, LegendOpts, ToolboxOpts

# 处理数据
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))
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%"),
    legend_opts=LegendOpts(is_show=True),  # 添加图例
    toolbox_opts=ToolboxOpts(is_show=True)  # 添加工具箱
)
# 调用render方法,生成图表
line.render()

# 关闭文件对象
f_us.close()
f_jp.close()
f_in.close()

 Python初学者学习记录——python基础综合案例:数据可视化——折线图可视化_第10张图片

你可能感兴趣的:(信息可视化,学习,python,开发语言,pycharm)