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

欢迎大家订阅【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 提供了多种全局配置选项,可以帮助我们调整图表的整体外观和行为。这些全局配置项可以在创建图表时进行设置,以改变图表的样式、颜色、标题等属性。
常见的全局配置项:

CategoryConfigurationExplanation
图表标题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. 渲染或生成图像

②常见方法

MethodFunctionExample
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.rhkb.cn/news/391703.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python open cv(图像处理的基本操作)

概要图 1读取图像 cv2.imread() 函数是OpenCV库中用于读取图像文件的函数。它有两个参数: 文件名:这是第一个也是必需的参数,它指定了要读取的图像文件的路径和文件名。这个路径可以是相对路径,也可以是绝对路径。 标志&#xf…

【practise】只出现一次的数字

现在给你一个数组,里面放了一些数字,里面都是两两成对,只有一个数字是单独的,要求找出其中只出现一次的数字。相必这道题是非常简单了,有很多解法比如说用暴力求解?比如说用位运算?甚至说用哈希…

【C++标准模版库】list的介绍及使用

list 一.list的介绍二.list的使用1.list 构造函数2.list 空间大小3.list 增删查改4.list 迭代器的使用1.正向迭代器2.反向迭代器 5.list 其他成员函数 三.vector与list关于sort性能的比较 一.list的介绍 C中的list标准模板库(STL)是C标准库中的一个重要组…

PCL1.11.0下载安装(Windows)

PCL1.11.0下载安装(Windows) PCL安装需要的几个模块如下图所示: 一、PCL1.11.0下载 PCL以1.11.0版本为例,打开下载连接(PCL下载) 下载PCL-1.11.0-AllInOne-msvc2019-win64.exe和pcl-1.11.0-pdb-msvc2019-…

Vue3 列表自动滚动播放(表头固定、列表内容自动滚动播放)+ vue3-seamless-scroll - 附完整示例

vue3-seamless-scroll:Vue3.0 无缝滚动组件,支持Vite2.0,支持服务端打包 目前组件支持上下左右无缝滚动,单步滚动,并且支持复杂图标的无缝滚动,目前组件支持平台与Vue3.0支持平台一致。 目录 效果 一、介绍…

腾讯云AI代码助手评测:如何智能高效完成Go语言Web项目开发

腾讯云AI代码助手评测:如何智能高效完成Go语言Web项目开发 🚀 文章目录 腾讯云AI代码助手评测:如何智能高效完成Go语言Web项目开发 🚀背景引言开发环境介绍腾讯云AI代码助手使用实例1. 代码补全2. 技术对话3. 代码优化4. 规范代码…

(计算机网络)物理层

目录 一.基本概念 二.基本术语 三.码元 四.多路复用技术 一.基本概念 1. 2. 3. 4. 5. 6. 7. 8. 9. 二.基本术语 1. 2. 3.早期--公用的电话网传输数据,网络上传的是模拟信号,调制解调器--将数字信号转化成模拟信号,最后,调制解…

NSSCTF-GDOUCTF 2023新生赛

[GDOUCTF 2023]hate eat snake 考察:js代码审计 打开题目,发现需要坚持60秒,那么简单的一个思路就是修改得分的变量>60即可 办法1:修改变量 右键查看源代码,之后发现有一个snake.js的文件,ctrlf搜索i…

程序设计基础(c语言)_补充_1

1、编程应用双层循环输出九九乘法表 #include <stdio.h> #include <stdlib.h> int main() {int i,j;for(i1;i<9;i){for(j1;j<i;j)if(ji)printf("%d*%d%d",j,i,j*i);elseprintf("%d*%d%-2d ",j,i,j*i);printf("\n");}return 0…

DS18B20数字温度传感器操作解析

文章目录 引言特点工作原理引脚说明配置寄存器温度寄存器时序初始化时序写时序读时序 引言 DS18B20 是一种广泛使用的数字温度传感器&#xff0c;具有高精度和易用性。是Dallas Semiconductor公司&#xff08;现为Maxim Integrated公司&#xff09;生产的单总线数字温度传感器…

关爱提示器-不要久坐

关爱提示器-不要久坐 最近身体不适腰疼脖子疼的&#xff0c;去医院检查&#xff0c;大夫提示注意身体不要久坐多运动等等之类的&#xff0c;哎&#xff0c;生活所迫&#xff0c;披星戴月兢兢业业的&#xff0c;到头来还要被批判躺平不努力。哎&#xff0c;先关爱自己吧&#xf…

Java | Leetcode Java题解之第322题零钱兑换

题目&#xff1a; 题解&#xff1a; public class Solution {public int coinChange(int[] coins, int amount) {int max amount 1;int[] dp new int[amount 1];Arrays.fill(dp, max);dp[0] 0;for (int i 1; i < amount; i) {for (int j 0; j < coins.length; j)…

Dynamo修改共享参数绑定的分组——群问题整理005

Hello大家好!我是九哥~ 今天继续给大家分享一些短平快的小教程,是来自群里面的问题。 问题005:Dynamo修改共享参数绑定的分组 今天看到群里询问如何修改参数所在的分组,查了下API,项目参数是不行的,不过共享参数是允许ReInsert()的,那么就好办了。 然后在Document下…

JavaEE 第4节 线程安全问题

小贴士&#xff1a; 本节题目所述的主题其实非常的庞大&#xff0c;如果要细讲起来&#xff0c;一篇博客远远不够&#xff0c;本篇博客只会每个方面的内容做一个简要描述&#xff0c;详细的内容在后续同专栏博客中都会涉及到的&#xff0c;如果有需要可以一步到本专栏的其他博客…

python运行js之execjs基本使用

python运行js之execjs基本使用 现在大部分网站都使用JS加密和JS加载的情况&#xff0c;数据并不能直接被抓取出来&#xff0c;这时候就需要使用第三方类库来执行JS语句。 官网&#xff1a;https://pypi.org/project/PyExecJS/ 使用前提&#xff1a;电脑需要安装 Node.js 一、安…

最新口型同步技术EchoMimic部署

EchoMimic是由蚂蚁集团推出的一个 AI 驱动的口型同步技术项目&#xff0c;能够通过人像面部特征和音频来帮助人物“对口型”&#xff0c;生成逼真的动态肖像视频。 EchoMimic的技术亮点在于其创新的动画生成方法&#xff0c;它不仅能够通过音频和面部关键点单独驱动图像动画&a…

【星闪开发连载】WS63E 星闪开发板和hi3861开发板的对比

此次星闪开发者体验官活动使用的开发板都是NearLink_DK_WS63E开发板&#xff0c;它和NearLink_DK_WS63开发板的区别在于具有雷达感知功能。从开发板的照片也可以看到WS63E有一个雷达天线接口。 我们把WS63E开发板和hi3861开发板的功能做了简单的对比&#xff0c;见下表。 参数…

用户看广告获取密码访问网页内容流量主模式源码

简介&#xff1a; 全开源付费进群流量主模式&#xff0c;用户看广告获取密码访问网页内容&#xff0c;网站生成内容&#xff0c;用户需要浏览内容跳转至小程序&#xff0c;观看广告后获取密码&#xff0c;输入密码查看网页内容。 与之前得9.9付费进群区别就是内容体现在了网页…

iPhone苹果手机Safari浏览器怎么收藏网页?

iPhone苹果手机Safari浏览器怎么收藏网页? 1、iPhone苹果手机上找到并打开Safari浏览器&#xff0c;并访问要收藏的网页&#xff1b; 2、打开网页后&#xff0c;点击导航上的更多功能&#xff1b; 3、在更多里&#xff0c;找到并点击添加到个人收藏&#xff0c;完成储存即可添…

JavaSE面试篇章——一文干破Java集合

文章目录 Java集合——一文干破集合一、集合的理解和好处1.1 数组1.2 集合 二、集合的框架体系三、Collection接口和常用方法3.1 Collection接口实现类的特点3.2 Collection接口遍历元素方式1-使用Iterator(迭代器)3.2.1 基本介绍3.2.2 迭代器的执行原理3.2.3 Iterator接口的方…