绽放趋势:Python折线图数据可视化艺术

文章目录

  • 一 json数据格式
    • 1.1 json数据格式认识
    • 1.2 Python数据和Json数据的相互转换
  • 二 pyecharts模块
    • 2.1 pyecharts概述
    • 2.2 pyecharts模块安装
  • 三 pyecharts快速入门
    • 3.1 基础折线图
    • 3.2 pyecharts配置选项
      • 3.2.1 全局配置选项
    • 3.4 折线图相关配置
      • 3.4.1 `.add_yaxis`相关配置选项
      • 3.4.2 `.set_global_opts`全局配置选项
  • 五 综合案例:对比折线图
    • 5.1 数据处理
    • 5.2 完整代码

一 json数据格式

1.1 json数据格式认识

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

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

  • 主要功能:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互. 类似于:国际通用语言-英语、中国56个民族不同地区的通用语言-普通话

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

  • 为了让不同的语言都能够相互通用的互相传递数据,JSON就是一种非常良好的中转数据格式。如下图,以Python和C语言互传数据为例:
    在这里插入图片描述

  • 简单的JSON数据示例:

    {
      "name": "John",
      "age": 30,
      "city": "New York"
    }
    
  • JSON还支持嵌套结构,数组和对象的组合:

    {
      "person": {
        "name": "Alice",
        "age": 25
      },
      "friends": [
        "Bob",
        "Charlie",
        "David"
      ]
    }
    
    

1.2 Python数据和Json数据的相互转换

  • 使用内置的json模块来进行Python数据和JSON数据之间的相互转换。这个模块提供了方法来将Python数据结构转换为JSON格式,以及将JSON格式转换为Python数据结构。

基本的示例:

  1. 将Python数据转换为JSON:
import json

# Python字典
python_data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

# 将Python字典转换为JSON字符串
json_data = json.dumps(python_data)
print(json_data)
import 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_str = json.dumps(d, ensure_ascii=False)
print(type(json_str))
print(json_str)
  • 通过设置ensure_ascii参数为False,你可以确保在生成JSON字符串时不会将非ASCII字符转义为Unicode转义序列。这对于处理包含非英文字符的数据非常有用,因为它能够保持原始的字符表示,而不是进行转义。
  1. 将JSON转换为Python数据:
# JSON字符串
json_data = '{"name": "Alice", "age": 25, "city": "London"}'

# 将JSON字符串转换为Python字典
python_data = json.loads(json_data)
print(python_data)
# 将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(type(l))
print(l)
# 将JSON字符串转换为Python数据类型{k: v, k: v}
s = '{"name": "周杰轮", "addr": "台北"}'
d = json.loads(s)
print(type(d))
print(d)

注意:

  • 使用json.dumps()函数可以将Python数据结构转换为JSON字符串。
  • 使用json.loads()函数可以将JSON字符串转换为Python数据结构。
  • JSON中的键必须是字符串,因此在Python字典中,键应为字符串。

二 pyecharts模块

2.1 pyecharts概述

  • Pyecharts 是一个基于 Python 的用于生成交互式图表的模块。它是对 ECharts 图表库的封装,ECharts 是百度开发的一款功能强大的数据可视化库。
  • 通过 Pyecharts,可以在 Python 中轻松地生成各种类型的图表,如折线图、柱状图、饼图、地图等,并且这些图表支持交互和动态效果。

Pyecharts 具有以下特点:

  • 提供了多种图表类型,适用于不同的数据展示需求。
  • 支持生成静态图像和动态网页交互图表。
  • 可以通过链式调用的方式配置图表样式、数据和交互行为。
  • 可以与常见的 Python 数据库和数据处理库(如 Pandas)集成。

2.2 pyecharts模块安装

  • 方式一:打开终端,使用命令行安装
pip install pyecharts
  • 方式二:使用PyCharm进行安装
    在这里插入图片描述
  • 配置镜像网站,参看探索Python异常世界:玩转异常、模块与包 6.5 PyCharm配置镜像网站

三 pyecharts快速入门

3.1 基础折线图

"""
演示pyecharts的基础入门
"""
# 导包
from pyecharts.charts import Line
# 创建一个折线图对象
line = Line()
# 给折线图对象添加x轴的数据
line.add_xaxis(["中国", "美国", "英国"])
# 给折线图对象添加y轴的数据
line.add_yaxis("GDP", [30, 20, 10])

# 通过render方法,将代码生成为图像
line.render()

在这里插入图片描述

3.2 pyecharts配置选项

  • pyecharts模块中有很多的配置选项, 常用到2个类别的选项:
    • 全局配置选项
    • 系列配置选项

3.2.1 全局配置选项

  • Pyecharts 提供了一些全局配置选项,可以用来在整个图表中设置一些通用的属性,比如图表标题、图例、工具箱等。这些选项会应用于整个图表,而不仅仅是某个特定系列或组件。
  • 全局配置选项可以通过set_global_opts方法来进行配置
    在这里插入图片描述
  • 以下是一些常用的全局配置选项及其说明:
  1. 标题设置
title_opts=opts.TitleOpts(title="图表标题", subtitle="副标题")
  1. 图例设置
legend_opts=opts.LegendOpts(type_="scroll", pos_left="center", orient="horizontal")
  1. 工具箱设置
toolbox_opts=opts.ToolboxOpts(is_show=True, feature=opts.ToolBoxFeatureOpts(save_as_image=True))
  1. 数据标签设置
label_opts=opts.LabelOpts(is_show=True, position="top")
  1. 全局系列样式设置
itemstyle_opts=opts.ItemStyleOpts(color="blue", border_color="red")
  1. 动画效果设置
animation_opts=opts.AnimationOpts(animation_delay=1000, animation_easing="elasticOut")
  1. 提示框设置
tooltip_opts=opts.TooltipOpts(
    formatter="{a}: {c}",
)
# formatter 参数可以设置提示框内容的显示格式。{a} 表示数据系列的名称,{c} 表示数据值。

这些全局配置选项通常可以通过 set_global_opts() 方法来应用于整个图表。

以下是一个示例,展示如何在折线图中使用全局配置选项:

# 导包
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()

在这里插入图片描述

3.4 折线图相关配置

配置项作用代码实例
init_opts对折线图初始化设置宽高init_opts=opts.InitOpts(width=“1600px”, height=“800px”)
.add_xaxis添加x轴数据.add_xaxis(列表)
.add_yaxis添加y轴数据

当使用 add_yaxis 方法来向图表中添加数据系列时,你可以使用一些相关的配置选项来自定义该数据系列的样式、标记点、标签等。以下是一些常用的 add_yaxis 相关配置选项:

3.4.1 .add_yaxis相关配置选项

配置选项说明
is_smooth是否使用平滑曲线插值,默认为 False
is_symbol_show是否显示标记点,默认为 True
symbol标记点的图形,如 “circle”、“rect”、“triangle” 等。
symbol_size标记点的大小。
label_opts数据标签的配置选项,可以设置是否显示、位置、颜色等。
areastyle_opts面积图样式的配置选项,用于区域图,设置填充色、透明度等。
linestyle_opts线条样式的配置选项,设置线的颜色、宽度、透明度等。
itemstyle_opts数据项的样式配置选项,包括颜色、边框颜色、透明度等。
markpoint_opts标记点的配置选项,可以添加最大值、最小值等标记点。
markline_opts标记线的配置选项,可以添加平均值、趋势线等标记线。
tooltip_opts提示框的配置选项,用于显示数据信息,包括格式、触发方式等。
step设置折线图的样式,可选值为 “start”、“middle”、“end”。
area_opacity面积图的透明度,适用于区域图。值范围为 [0, 1]。
label用于设置数据项的名称,会在图例和提示框中显示。
data数据列表,表示 y 轴数据。
series_name设置图例名称,series_name=“美国确诊人数”

3.4.2 .set_global_opts全局配置选项

在这里插入图片描述

五 综合案例:对比折线图

5.1 数据处理

  • 原始数据格式:(使用json工具查看)
    在这里插入图片描述
  • 对数据进行整理, 让数据符合json格式
import json
from pyecharts.charts import Line

# 处理数据
f_us = open("C:/美国.txt", "r", encoding="UTF-8")
us_data = f_us.read()   # 美国的全部内容

f_jp = open("C:/日本.txt", "r", encoding="UTF-8")
jp_data = f_jp.read()   # 日本的全部内容

f_in = open("C:/印度.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]

5.2 完整代码

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

# 处理数据
f_us = open("C:/美国.txt", "r", encoding="UTF-8")
us_data = f_us.read()   # 美国的全部内容

f_jp = open("C:/日本.txt", "r", encoding="UTF-8")
jp_data = f_jp.read()   # 日本的全部内容

f_in = open("C:/印度.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))     # 添加美国的y轴数据
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%"),
    # x轴配置项
	xaxis_opts=AxisOpts(name="时间"),  # 轴标题
	# y轴配置项
	yaxis_opts=AxisOpts(name="累计确诊人数"),    # 轴标题
	# 图例配置项
	legend_opts=LegendOpts(pos_left='70%'),    # 图例的位置
)

# 调用render方法,生成图表
line.render()
# 关闭文件对象
f_us.close()
f_jp.close()
f_in.close()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/69775.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Netty宝典

文章目录 一.NIO1.简介2.缓冲区(Buffer)3.通道(Channel)4.选择器(Selector)5.原理6.SelectionKey7.ServerSocketChannel 和 SocketChannel8.Socket 二.线程模型1.传统阻塞 I/O 服务模型2.Reactor 模式3.单 Reactor 单线程4.单Reactor多线程5.主从 Reactor 多线程6.为什么用Nett…

P450进阶款无人机室内定位功能研测

在以往的Prometheus 450(P450)无人机上,我们搭载的是Intel Realsense T265定位模块,使用USB连接方式挂载到机载计算机allspark上,通过机载上SDK驱动T265运行并输出SLAM信息,以此来实现室内定位功能。 为进…

【雕爷学编程】Arduino动手做(24)---水位传感器模块2

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…

Git (2)

文章目录 1. 删除文件2. 分支管理2.1 理解分支2.2 分支创建 , 分支切换2.3 分支合并2.4 删除分支2.5 合并冲突2.6 合并模式2.7 分支策略2.8 bug 分支2.9 强制删除分支 3. 远程操作3.1 创建远程仓库3.2 克隆远程仓库3.3 推送3.4 拉取3.5 gitignore 文件3.6 配置别名 …

2023-08-11 LeetCode每日一题(矩阵对角线元素的和)

2023-08-11每日一题 一、题目编号 1572. 矩阵对角线元素的和二、题目链接 点击跳转到题目位置 三、题目描述 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&#xff1…

【设计模式——学习笔记】23种设计模式——中介者模式Mediator(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入案例一普通实现中介者模式 案例二 介绍基础介绍登场角色尚硅谷 《图解设计模式》 案例实现案例一:智能家庭类图实现 案例二:登录页面逻辑实现说明类图实现 总结文章说明 案例引入 案例一 普通实现 在租房过程中,客户可能…

推荐系统工作小结

最初的构想 由于我们的技术团队中并没有人真正用大数据的方法做过推荐系统。所以我们定的步骤是先解决有没有的问题。然后再持续地进行效果优化的工作。 现状 但一方面考虑到要快速上线。另一方面也希望对推荐系统的效果有一个合理的参照。我们打算先使用达观数据的推荐系统云…

【JavaScript】怎么测试方法的兼容性

利用网站测试方法的兼容性 打开网站:https://caniuse.com在里面输入要检测的方法,红色代表不支持,绿色代码支持。

玩赚音视频开发高阶技术——FFmpeg

随着移动互联网的普及,人们对音视频内容的需求也不断增加。无论是社交媒体平台、电商平台还是在线教育,都离不开音视频的应用。这就为音视频开发人员提供了广阔的就业机会。根据这些年来网站上的音视频开发招聘需求来看,音视频开发人员的需求…

面试热题(单词搜索)

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相…

2023免费苹果mac电脑清理垃圾软件CleanMyMacX

在买新电脑的时候,很多用户都会优先考虑Mac电脑,因为它有着优秀的性能、设计和安全性。但是,随着时间的推移,mac电脑也会积累很多不必要的文件,占用大量的磁盘空间,影响电脑的运行速度和效率。这些文件主要…

【STM32】小电流FOC驱控一体板(开源)

FOC驱控一体板http://链接: https://pan.baidu.com/s/12HoV9yDlMC5QVGNCJ5tK0w 提取码: 1111 主控芯片stm32f103c8t6 驱动芯片drv8313 三相电流采样 根据B站一个UP主的改的(【【自制】年轻人的第一块FOC驱动器】),大多数元器件是0805&…

Jmeter 配置环境变量,简明教程专享

通过给 JMeter 配置环境变量,可以快捷的打开 JMeter: 打开终端。执行 jmeter。 配置环境变量的方法如下。 Mac 和 Linux 系统 在 ~/.bashrc 中加如下内容: export JMETER_HOMEJMeter所在目录 export PATH$JAVA_HOME/bin:$PATH:.:$JMETER…

uniapp----分包

系列文章目录 uniapp-----封装接口 uniapp-----分包 目录 系列文章目录 uniapp-----封装接口 uniapp-----分包 前言 二、使用步骤 1.创建文件 ​编辑 2.min.js的修改 2.1 subPackages 代码如下(示例): 2.2 preloadRule 代码如下&am…

【QT】 QTabWidgetQTabBar控件样式设计(QSS)

很高兴在雪易的CSDN遇见你 ,给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享QT控件QTabWidget&QTabBar的样式设计,介绍两者可以自定义的内容,以及如何定义,希望对各位小伙伴有所帮助! 感谢各位小伙伴…

Python机器学习实战-建立AdaBoost模型预测肾脏疾病(附源码和实现效果)

实现功能 建立AdaBoost模型(集成学习)预测肾脏疾病 实现代码 import pandas as pd import warnings warnings.filterwarnings("ignore") pd.set_option(display.max_columns, 26)#读取数据 df pd.read_csv("E:\数据杂坛\datasets\kidn…

SecureCRT密码破解(实验环境:win10,SecureCRT Version 9.1.0 (x64 build 2579))

实验环境:win10, SecureCRT:Version 9.1.0 (x64 build 2579) 1. SecureCRTCipher.py 文件 #!/usr/bin/env python3 import os from Crypto.Hash import SHA256 from Crypto.Cipher import AES, Blowfishclass SecureCRTCrypto:def __init_…

计时器setTimeout()函数、setInterval()函数

文章目录 🐒个人主页🏅JavaEE系列专栏📖前言:🏅计时器setTimeout(函数名,延迟时间)结束计时器setTimeout 🏅计时器setInterval(函数名,延迟时间&a…

CMake: 检测并使用OpenMP的并行环境

CMake: 检测OpenMP的并行环境 导言OpenMP简介项目结构CMakeLists.txt相关源码输出结果 导言 目前,市面上的计算机几乎都是多核机器,对于性能敏感的程序,我们必须关注这些多核处理器,并在编程模型中使用并发。OpenMP是多核处理器上…

解决Redis启动时闪退 报错Creating Server TCP listening socket *:6379: bind: No error

找到安装redis的文件夹 在地址输入cmd 依次输入如下 redis-cli.exe shutdown exit redis-server.exe redis.windows.conf