Chapter 22 数据可视化——折线图

news2024/11/24 12:23:48

欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能!

文章目录

  • 前言
  • 一、Pyecharts介绍
  • 二、安装Pyecharts
  • 三、全局配置项
  • 四、绘制折线图


前言

在大数据时代,数据可视化成为了分析和展示数据的重要手段。Pyecharts 是一个基于 Python 的强大数据可视化库,能够快速生成易于分享和交互的可视化图表。本章详细讲解了 Pyecharts 的官网资源、安装流程、全局配置项以及如何创建折线图。


本篇文章参考:黑马程序员

一、Pyecharts介绍

Pyecharts 是一个基于 Echarts 实现的 Python 可视化库,可以轻松创建交互式的图表。
①pyecharts官网
pyecharts官网提供了详细的文档和使用手册,介绍了 Pyecharts 的各种功能、API 和用法。
在这里插入图片描述
在这里插入图片描述

②pyecharts画廊官网
Pyecharts 画廊官网展示了大量实际图表的示例,包括各种复杂和多样化的图表。画廊中的图表通常是交互式的,可以在网页上直接与图表进行互动,例如缩放、筛选或者查看详细数据。
在这里插入图片描述
在这里插入图片描述

二、安装Pyecharts

Win+R 打开运行对话框,在对话框中输入cmd并回车进入命令提示符。
在这里插入图片描述
输入pip install pyecharts即可通过网络快速安装第三方包。
在这里插入图片描述
检验pyecharts是否可以正常使用,输入python并回车进入python解释器环境,接着输入import pyecharts导入pyecharts包并回车,如果没有报错即可正常使用。
在这里插入图片描述

三、全局配置项

Pyecharts 提供了多种全局配置选项,可以帮助我们调整图表的整体外观和行为。这些全局配置项可以在创建图表时进行设置,以改变图表的样式、颜色、标题等属性。
常见的全局配置项:

类别配置项说明
图表标题title主标题
图表标题subtitle副标题
图表标题subtext副标题详细信息
图表标题link点击标题跳转的链接
图表标题target标题链接的目标
图表标题textstyle_opts字体样式(如颜色、大小等)
提示框is_show是否显示提示框
提示框trigger提示框触发方式(如 'item'
提示框formatter自定义格式化函数
图例orient图例的朝向('horizontal''vertical'
图例pos_left图例的左边距
图例pos_top图例的上边距
图例data显示的图例名称列表
坐标轴name坐标轴名称
坐标轴type坐标轴类型(如 'value''category'
坐标轴axislabel_opts坐标轴标签样式
坐标轴split_line是否显示坐标轴分隔线
数据缩放type数据缩放的类型(如 'inside''slider'
数据缩放xaxis_index控制哪个 X 轴的数据缩放
数据缩放yaxis_index控制哪个 Y 轴的数据缩放
背景backgroundColor图表的背景颜色
背景visualMap视觉映射配置
网格left网格的左边距
网格right网格的右边距
网格top网格的上边距
网格bottom网格的下边距
网格containLabel是否包含坐标轴的标签
其他选项animation动画关于图表的显示(开启/关闭)
其他选项tooltip提示框的整体设置
其他选项series针对特定系列的设置

四、绘制折线图

①基本流程

  1. 导入必要的模块
  2. 创建折线图对象
  3. 添加 X 轴数据
  4. 添加 Y 轴数据
  5. 设置全局选项
  6. 渲染或生成图像

②常见方法

方法作用示例
Line()创建折线图对象from pyecharts.charts import Line; line = Line()
add()添加数据系列line.add_xaxis(x_data).add_yaxis("系列名称", y_data)
set_global_opts()设置全局配置,如标题、工具提示等line.set_global_opts(title_opts=opts.TitleOpts(title="图表标题"))
set_series_opts()设置系列特定配置,如标签、样式等line.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
render()渲染图表并保存为 HTML 文件line.render("line_chart.html")
set_colors()自定义折线颜色line.set_colors(['#d48265', '#91c7ae'])
set_tooltip()自定义 tooltip 的显示方式line.set_global_opts(tooltip_opts=opts.TooltipOpts(formatter="{b}: {c}"))
set_xaxis()自定义 x 轴的名称或类型line.set_xaxis("自定义 X 轴名称")
set_yaxis()自定义 y 轴的名称或类型line.set_yaxis("自定义 Y 轴名称")
legend()设置图例line.set_series_opts(legend_opts=opts.LegendOpts(is_show=True))
datazoom()添加数据缩放控件line.set_global_opts(datazoom_opts=[opts.DataZoomOpts()])
# 导包,导入Line功能构建折线图对象
from pyecharts.charts import Line
# 创建一个折线图对象
line=Line()
# 给折线图对象添加x轴的数据
line.add_xaxis(["中国","美国","英国"])
# 给折线图对象添加y轴的数据
line.add_yaxis("CDP",[30,20,10])
# 通过render方法将代码生成图像
line.render()

运行后line.render() 方法会创建并保存一个包含该折线图的HTML文件。通常情况下,这个文件会被保存在当前工作目录下,文件名默认是 render.html
在这里插入图片描述
打开render.html文件,点击右上角的浏览器图标,可以在浏览器中查看创建的折线图。
在这里插入图片描述
在这里插入图片描述
进行全局配置后:

# 导包                                                                         
from pyecharts.charts import Line                                            
from pyecharts.options import TitleOpts                                      
from pyecharts.options import LegendOpts                                     
from pyecharts.options import ToolboxOpts                                    
from pyecharts.options import VisualMapOpts                                  
# 创建一个折线图对象                                                                  
line=Line()                                                                  
# 给折线图对象添加x轴的数据                                                              
line.add_xaxis(["中国","美国","英国"])                                             
# 给折线图对象添加y轴的数据                                                              
line.add_yaxis("CDP",[30,20,10])                                             
# 通过set_global_pots设置全局配置项                                                   
line.set_global_opts(
    # 用于配置图表的标题                                                  
    title_opts=TitleOpts(title="GDP展示",
    # 将标题位置设置为居中显示,距底部设置为占图表可用高度的1%
    pos_left="center",pos_bottom="1%"),
    # 设置图例的可见性    
    legend_opts=LegendOpts(is_show=True),
    # 用于配置工具箱的选项                                    
    toolbox_opts=ToolboxOpts(),
    # 设置视觉映射的可见性                                              
    visualmap_opts=VisualMapOpts(is_show=True),                              
)                                                                            
                                                                             
# 通过render方法将代码生成图像
line.render()                                                         

在这里插入图片描述
【例题】
根据如下三个文本文件画出2020年ABC三国某疾病确诊人数对比折线图。
A国.txt文本文件内容:
jsonp_1629344292311_69436({“status”:0,“msg”:“success”,“data”:[{“name”:“A国”,“trend”:{“updateDate”:[“2.22”,“2.23”,“2.24”,“2.25”,“2.26”],“list”:[{“name”:“确诊”,“data”:[34,34,34,53,57]},{“name”:“治愈”,“data”:[0,0,3,0,0]},{“name”:“死亡”,“data”:[0,0,0,0,0]},{“name”:“新增确诊”,“data”:[23,0,0,19,4]}]}}]});

B国.txt文本文件内容:
jsonp_1629350871167_29498({“status”:0,“msg”:“success”,“data”:[{“name”:“B国”,“trend”:{“updateDate”:[“2.22”,“2.23”,“2.24”,“2.25”,“2.26”],“list”:[{“name”:“确诊”,“data”:[93,105,132,144,156]},{“name”:“治愈”,“data”:[23,24,24,26,27]},{“name”:“死亡”,“data”:[1,1,1,1,1]},{“name”:“新增确诊”,“data”:[9,12,27,12,12]}]}}]});

C国.txt文本文件内容:
jsonp_1629350745930_63180({“status”:0,“msg”:“success”,“data”:[{“name”:“C国”,“trend”:{“updateDate”:[“2.22”,“2.23”,“2.24”,“2.25”,“2.26”],“list”:[{“name”:“确诊”,“data”:[54,59,67,76,84]},{“name”:“治愈”,“data”:[468,506,620,774,969]},{“name”:“死亡”,“data”:[164,178,226,249,288]},{“name”:“新增确诊”,“data”:[533,565,809,875,846]}]}}]});

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

# 处理数据
f_a = open("D:/A国.txt", "r", encoding="UTF-8")
a_data = f_a.read()   # A国的全部内容

f_b = open("D:/B国.txt", "r", encoding="UTF-8")
b_data = f_b.read()   # B国的全部内容

f_c = open("D:/C国.txt", "r", encoding="UTF-8")
c_data = f_c.read()   # C国的全部内容

# 去掉不合JSON规范的开头
a_data = a_data.replace("jsonp_1629344292311_69436(", "")
b_data = b_data.replace("jsonp_1629350871167_29498(", "")
c_data = c_data.replace("jsonp_1629350745930_63180(", "")

# 去掉不合JSON规范的结尾
a_data = a_data[:-2]
b_data = b_data[:-2]
c_data = c_data[:-2]

# JSON转Python字典
us_dict = json.loads(a_data)
jp_dict = json.loads(b_data)
in_dict = json.loads(c_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轴
us_x_data = us_trend_data['updateDate']
jp_x_data = jp_trend_data['updateDate']
in_x_data = in_trend_data['updateDate']

# 获取确认数据,用于y轴
us_y_data = us_trend_data['list'][0]['data']
jp_y_data = jp_trend_data['list'][0]['data']
in_y_data = in_trend_data['list'][0]['data']

# 生成图表
line = Line()       # 构建折线图对象
# 添加x轴数据
line.add_xaxis(us_x_data)   # x轴是公用的,所以使用一个国家的数据即可
# 添加y轴数据
line.add_yaxis("A国确诊人数", us_y_data, label_opts=LabelOpts(is_show=False))     # 添加A国的y轴数据
line.add_yaxis("B国确诊人数", jp_y_data, label_opts=LabelOpts(is_show=False))     # 添加B国本的y轴数据
line.add_yaxis("C国确诊人数", in_y_data, label_opts=LabelOpts(is_show=False))     # 添加C国的y轴数据

# 设置全局选项
line.set_global_opts(
    # 标题设置
    title_opts=TitleOpts(title="2020年ABC三国某疾病确诊人数对比折线图", pos_left="center", pos_bottom="1%")
)

# 调用render方法,生成图表
line.render("render2.html")
# 关闭文件对象
f_a.close()
f_b.close()
f_c.close()

运行后打开render2.html文件并在浏览器中查看创建的折线图:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序-获取手机号:HttpClientErrorException: 412 Precondition Failed: [no body]

问题: 412 异常就是你的请求参数获取请求头与服务器的不符,缺少请求体! 我的问题: 我这里获取微信手机号的时候突然给我报错142,但是代码用的是原来的代码,换了一个框架就噶了! 排查问题&am…

esp-07s 模块的WIFI 联网和MQTT AT指令测试,固件下载更新方法

安信可官网: https://docs.ai-thinker.com/start 一、wifi 联网测试指令 版本:AT version: 1.2.0.0 //1.重启模块 ATRST//2.设置当前 Wi-Fi 模式,不保存到 flash ATCWMODE_CUR1//3.设置 DHCP,不保存到 flash ATCWDHCP_CUR1,1//4.上电是否…

AIGC大模型产品经理高频面试大揭秘‼️

近期有十几个学生在面试大模型产品经理(薪资还可以,详情见下图),根据他们面试(包括1-4面)中出现高频大于3次的问题汇总如下,一共32道题目(有答案)。 29.讲讲T5和Bart的区…

使用PhotoMaker V2产生明星香水广告照片

PhotoMaker V2 是一个令人兴奋的工具,可以帮助您快速生成逼真的个性化人物照片。您只需提供一张或几张面部照片以及一个文本提示,即可在几秒钟内获得定制的照片或绘画,无需进行额外的训练。这个模型还可以与其他基于 SDXL 的基础模型或其他 L…

干货 | 2024中国联通算力网络安全白皮书(免费下载)

本白皮书以国家整体安全观为指导,充分发挥网络安全现代产业链链长的主体支撑和融通带动作用,提出算力网络“新质安全、共链可信”的安全愿景和“构建开放融合内生免疫弹性健壮网安智治的一体化安全”的安全目标。从运营商开展网络建设和应用部署的角度出…

安全编程:Rust示例强密码策略

一、什么是强密码策略? 强密码策略是一套旨在提高账户安全性的规则和建议。以下是一些创建和使用强密码的关键策略: 长度:密码应至少包含8个字符,更长的密码通常更安全。 复杂性:使用大小写字母、数字和特殊字符的组合…

OAuth2的四种认证方式

文章目录 客户端认证grant_typeclient_credential授权码认证access_token密码认证grant_typepassword刷新token认证其他认证 OAuth2是目前流行的认证协议,主要包含四种认证方式:客户端认证、密码认证、授权码认证、刷新令牌认证。 客户端认证grant_typec…

SpringBoot项目打包成war包

1. 项目场景 使用SpringBoot 开发项目,由于内置了Tomcat,所以项目可以直接启动,部署到服务器的时候,直接打成 jar 包,就可以运行了。 有时需要把项目打包放入外置的 Tomcat 或者 TongWeb 中运行,就需要把…

【Golang 面试 - 进阶题】每日 3 题(九)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…

搞懂收发模式(Transmit、Receive、IT、DMA、ToIdle、Abort、Callback)

搞懂收发模式(Transmit、Receive、IT、DMA、ToIdle、Abort) 文章目录 搞懂收发模式(Transmit、Receive、IT、DMA、ToIdle、Abort)1、阻塞模式(阻塞轮询)2、非阻塞模式( IT )3、直接内…

D盘根目录莫名出现 *.scratch 文件夹

不知道从什么时候开始,突然发现D盘根目录出现奇怪的空文件夹(图一),一开始因为需求紧张没时间管,但是没几天就发现这个空文件夹越来越多,多到上百个了。 要是几个那还能忍忍,这种程度已经严重影…

IDEA优化配置,提高启动和运行速度

一、修改配置参数 IDEA默认启动配置主要考虑低配置用户,参数不高,导致 启动慢,然后运行也不流畅,这里我们需要优化下启动和运行配置; 找到idea安装的bin目录; 你的按照目录\IntelliJ IDEA 2018.2.2\bin …

客户现场电脑卡死

最近遇到一个很奇怪的现象,客户现场机台运行过程中,出现不规律的卡顿或假死蓝屏情况,软件分析显得异常重要. 首先我们从软件的运行状态,内存,cpu利用率等性能方面排查,通过观察,我们发现内存没有暴涨的情况,cpu利用率也不是很高,表现的现象就是不定时的出现软件假死,卡顿现象.…

SQL插入、更新和删除数据

SQL插入、更新和删除数据 一、直接向表插入数据 1.1、插入完整的行 这里所说的完整行指的是包含表内所有字段的数据行;假设表中有n个字段,则插入完整行的语法: INSERT INTO 表名或视图名 VALUES(字段1的值,字段2的值,字段3的值,...,字段n的…

JSONP跨域

1 概述 定义 json存在的意义: 不同类型的语言,都能识别json JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 s…

MCU单片机GPIO初始化该按什么顺序配置?为什么初始化时有电平跳变?

GPIO初始化时有时钟配置、模式配置、输出配置、复用配置,那么在编写初始化代码时,到底该按什么顺序执行呢?如果顺序不当那初始化过程可能会出现短暂的电平跳变。 第一步,初始化MCU外设时,一般都需要先打开对应寄存器的…

Multi-Head Mixture-of-Experts笔记

这篇文章(还是校友),也是和dot product本身没什么关系。讲一讲核心思想 文章在背景中介绍了Sparse Mixture of Experts,因为MH-MoE也是在S-MoE基础上做的,个人感觉其实变动并不大,但我觉得写的很清楚&…

优化 Spring Boot 项目启动速度:高效管理大量 Bean 注入

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…

卷积神经网络 - 卷积运算篇

序言 在探索深度学习尤其是计算机视觉领域的奥秘时,卷积神经网络( Convolutional Neural Networks, CNNs \text{Convolutional Neural Networks, CNNs} Convolutional Neural Networks, CNNs)无疑占据了核心地位。而卷积运算,作为…

书生大模型基础岛-第二关:8G 显存玩转书生大模型 Demo

1.来源 https://github.com/InternLM/Tutorial/blob/camp3/docs/L1/Demo/task.md 2.过程 在 /root/share/pre_envs 中配置好了预置环境 icamp3_demo conda activate /root/share/pre_envs/icamp3_demo创建一个目录,用于存放我们的代码。并创建一个 cli_demo.py …