数据分析 — 动画图 pyecharts

news/发布时间2024/5/15 12:16:43

目录

  • 一、概念
  • 二、安装和导入
  • 三、绘图逻辑
  • 四、绘图
    • 1、柱状图
    • 2、折线图
    • 3、散点图
    • 4、饼图
    • 5、南丁格尔图
    • 6、Geo() 地理坐标第
    • 7、Map() 绘制区域
    • 8、词云图
    • 9、层叠图
    • 10、3D 图
    • 11、仪表板

一、概念

Pyecharts 是一个基于 Echarts 的 Python 可视化库,它通过 Python 生成 Echarts 的图表,并支持多种常见的图表类型,如折线图、柱状图、散点图、饼图等。
官网地址:https://pyecharts.org/#/zh-cn/intro

二、安装和导入

pip install pyecharts

from pyecharts.charts import * # 从 pyecharts.charts 模块中导入所有类

三、绘图逻辑

1、选择图表类型

2、声明图形类

3、选择全局变量

4、显示及保存图表

四、绘图

1、柱状图

from pyecharts.charts import Bar  # 从 pyecharts.charts 模块中导入 Bar 类# 定义月份和对应的消费金额数据
months = ['一月', '二月', '三月', '四月', '五月', '六月']
cost = [1200, 1500, 1800, 1400, 1600, 2000]# 创建一个 Bar 对象
bar = (Bar()  # 调用 Bar 类的构造函数.add_xaxis(months)  # 添加 x 轴的数据,即月份.add_yaxis('消费金额', cost)  # 添加 y 轴的数据,即消费金额,'消费金额' 为系列的名称
)# 将图表保存为 HTML 文件,路径为 './bar.html'
bar.render('./bar.html')

在这里插入图片描述

2、折线图

# 从 pyecharts.charts 模块中导入 Line 类
from pyecharts.charts import Line# 定义一周的日期和对应的温度、湿度数据
days = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
temperatures = [28, 29, 30, 32, 31, 30, 29]
humidity = [40, 50, 70, 65, 45, 55]# 创建一个 Line 对象
line = (Line()  # 调用 Line 类的构造函数.add_xaxis(days)  # 添加 x 轴的数据,即日期.add_yaxis('折线图1', temperatures)  # 添加第一条 y 轴的数据,即温度,'折线图1' 为系列的名称.add_yaxis('折线图2', humidity)  # 添加第二条 y 轴的数据,即湿度,'折线图2' 为系列的名称
)# 将图表保存为 HTML 文件,路径为 './line.html'
line.render('./line.html')

在这里插入图片描述

3、散点图

from pyecharts.charts import Scatter  # 从 pyecharts.charts 模块中导入 Scatter 类# 定义一周的日期和对应的温度、湿度数据
cities = ['北京', '上海', '广州', '深圳', '成都', '重庆']
days = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
temperatures = [32, 33, 30, 31, 28, 30]
humidity = [40, 50, 70, 65, 45, 55]# 创建一个 Scatter 对象
scatter = (Scatter()  # 调用 Scatter 类的构造函数.add_xaxis(days)  # 添加 x 轴的数据,即日期.add_yaxis('温度', temperatures)  # 添加第一条 y 轴的数据,即温度,'温度' 为系列的名称.add_yaxis('湿度', humidity)  # 添加第二条 y 轴的数据,即湿度,'湿度' 为系列的名称
)# 将图表保存为 HTML 文件,路径为 './scatter.html'
scatter.render('./scatter.html')

在这里插入图片描述

4、饼图

from pyecharts.charts import Pie  # 从 pyecharts.charts 模块中导入 Pie 类# 定义水果和对应的销量数据
fruits = ['苹果', '香蕉', '橙子', '草莓', '葡萄']
sales = [45, 30, 25, 20, 15]
# 将水果和销量数据组合成一个列表
data = [list(z) for z in zip(fruits, sales)]# 创建一个 Pie 对象
pie = (Pie()  # 调用 Pie 类的构造函数.add(  # 添加数据series_name='水果销量',  # 设置系列的名称data_pair=data,  # 设置数据对,包含水果和对应的销量)
)# 将图表保存为 HTML 文件,路径为 './pie.html'
pie.render('./pie.html')

在这里插入图片描述

5、南丁格尔图

from pyecharts.charts import Pie  # 从 pyecharts.charts 模块中导入 Pie 类
from pyecharts import options as opts  # 从 pyecharts.options 模块中导入 opts 类# 定义水果和对应的销量数据
fruits = ['苹果', '香蕉', '橙子', '草莓', '葡萄']
sales = [45, 30, 25, 20, 15]
# 将水果和销量数据组合成一个列表
data = [list(z) for z in zip(fruits, sales)]# 创建一个 Pie 对象,并设置半径、标签格式和玫瑰图样式
pie2 = (Pie()  # 调用 Pie 类的构造函数.add(  # 添加数据series_name='水果销量',  # 设置系列的名称data_pair=data,  # 设置数据对,包含水果和对应的销量radius=['40%', '60%'],  # 设置饼图的半径范围label_opts=opts.LabelOpts(formatter="{b}:{d}%"),  # 设置标签的格式,显示水果名称和销量占比rosetype="radius"  # 设置玫瑰图样式,即设置为半径模式)
)# 将图表保存为 HTML 文件,路径为 './pie_radius.html'
pie2.render('./pie2.html')

在这里插入图片描述

6、Geo() 地理坐标第

from pyecharts.charts import Geo  # 从 pyecharts.charts 模块中导入 Geo 类
from pyecharts import options as opts  # 从 pyecharts.options 模块中导入 opts 类
import random  # 导入 random 模块# 定义省份数据,以及每个省份的随机数据(模拟数据)
province = ['广东', '湖北', '湖南', '四川', '重庆', '黑龙江','浙江', '山西', '河北', '安徽', '河南', '山东', '西藏'
]
data = [(i, random.randint(50, 150)) for i in province]# 创建一个 Geo 对象,并设置地图类型为 "china"
geo = (Geo()  # 调用 Geo 类的构造函数.add_schema(maptype="china")  # 设置地图类型为中国地图.add("", data)  # 添加数据,data 中包含省份和对应的随机数据.set_series_opts(label_opts=opts.LabelOpts(is_show=True))  # 设置系列的标签选项,显示省份名称.set_global_opts(visualmap_opts=opts.VisualMapOpts(  # 设置全局的视觉映射选项is_piecewise=True,  # 设置为分段型视觉映射pieces=[{'min': 50, 'max': 100, 'label': '50-100'},  # 视觉映射的分段设置{'min': 100, 'max': 150, 'label': '100-150'}]))
)# 将图表保存为 HTML 文件,路径为 './geo.html'
geo.render('./geo.html')

在这里插入图片描述

7、Map() 绘制区域

from pyecharts.charts import Map  # 从 pyecharts.charts 模块中导入 Map 类
from pyecharts import options as opts  # 从 pyecharts.options 模块中导入 opts 类
import random  # 导入 random 模块# 定义省份数据,以及每个省份的随机数据(模拟数据)
province = ['广东省', '湖北省', '湖南省', '四川省', '重庆市', '黑龙江省','浙江省', '山西省', '河北省', '安徽省', '河南省', '山东省', '西藏自治区'
]
data = [(i, random.randint(50, 250)) for i in province]
# 创建一个 Map 对象,并添加数据
map = Map()
map.add('确诊人数', data)# 设置全局选项,包括标题和视觉映射的设置
map.set_global_opts(title_opts=opts.TitleOpts(title='全国疫情地图'),  # 设置地图的标题visualmap_opts=opts.VisualMapOpts(  # 设置视觉映射的选项is_piecewise=True,  # 设置为分段型视觉映射pieces=[{'min': 50, 'max': 99, 'label': '50-99人', 'color': 'yellow'},  # 视觉映射的分段设置{'min': 100, 'max': 149, 'label': '100-149人', 'color': 'pink'},{'min': 150, 'max': 199, 'label': '150-199人', 'color': 'green'},{'min': 200, 'max': 250, 'label': '200-250人', 'color': 'red'}])
)# 将图表保存为 HTML 文件,路径为 './map.html'
map.render('./map.html')

在这里插入图片描述

8、词云图

from pyecharts.charts import WordCloud  # 从 pyecharts.charts 模块中导入 WordCloud 类# 定义词云数据,每个元组包含单词和对应的频率
words = [("economy", 1230),("jude", 124),("dont", 436),("make", 255),("it", 247),("bad", 244),("Take", 138),("a sad song", 184),("and", 12),("make", 165),("it", 247),("better", 182),("remember", 255),("to", 150),("let", 162),("her", 266),("into", 60),("your", 82),("heart", 173),("then", 365),("you", 360),("can", 282),("start", 273),("make", 265),
]# 创建一个 WordCloud 对象,并添加词云数据
wc = (WordCloud()  # 调用 WordCloud 类的构造函数.add("", words)  # 添加词云数据,空字符串表示没有系列名称
)# 将词云图保存为 HTML 文件,路径为 './wc.html'
wc.render('./wc.html')

在这里插入图片描述

9、层叠图

from pyecharts.charts import Bar, Line  # 从 pyecharts.charts 模块中导入 Bar 和 Line 类# 定义横轴数据(x 轴)
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
# 定义柱状图的纵轴数据
y_data_bar = [123, 153, 89, 107, 98, 23]
# 定义折线图的纵轴数据
y_data_line = [153, 107, 23, 89, 123, 107]# 创建柱状图对象,添加横轴和纵轴数据
bar = (Bar()  # 调用 Bar 类的构造函数.add_xaxis(x_data)  # 添加横轴数据.add_yaxis('', y_data_bar)  # 添加柱状图的纵轴数据,空字符串表示没有系列名称
)
# 创建折线图对象,添加横轴和纵轴数据
line = (Line()  # 调用 Line 类的构造函数.add_xaxis(x_data)  # 添加横轴数据.add_yaxis('', y_data_line)  # 添加折线图的纵轴数据,空字符串表示没有系列名称
)# 将折线图和柱状图进行重叠
overlap = line.overlap(bar)
# 将重叠图保存为 HTML 文件,路径为 './overlap.html'
overlap.render('./overlap.html')

在这里插入图片描述

10、3D 图

from pyecharts.charts import Bar3D  # 从 pyecharts.charts 模块中导入 Bar3D 类# 定义三维柱状图的数据,数据为一个二维列表
data = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]
# 创建一个三维柱状图对象,添加数据
bar3d = Bar3D()  # 调用 Bar3D 类的构造函数
bar3d.add("", data)  # 添加三维柱状图的数据,空字符串表示没有系列名称# 将三维柱状图保存为 HTML 文件,路径为 './bar3d.html'
bar3d.render('./bar3d.html')

在这里插入图片描述

11、仪表板

import numpy as np  # 导入 NumPy 库并使用别名 np
from pyecharts.charts import *  # 从 pyecharts.charts 模块中导入所有类
from pyecharts.charts import Page  # 从 pyecharts.charts 模块中导入 Page 类# 定义柱状图函数
def bar():# 定义横轴和纵轴数据x_data = ["水笔", "铅笔", "钢笔", "圆珠笔"]y_data = [40, 30, 98, 42]# 创建柱状图对象,添加横轴和纵轴数据bar = (Bar().add_xaxis(x_data).add_yaxis("", y_data))return bar# 定义折线图函数
def line():# 定义横轴和纵轴数据x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']y_data = [123, 153, 89, 107, 98, 23]# 创建折线图对象,添加横轴和纵轴数据line = (Line().add_xaxis(x_data).add_yaxis('呵呵', y_data))return line# 定义散点图函数
def scatter():# 生成正弦函数数据x = np.linspace(0, 2 * np.pi, 100)y = np.sin(x)# 创建散点图对象,添加横轴和纵轴数据scatter = (Scatter().add_xaxis(x).add_yaxis("正弦", y))return scatter# 定义饼图函数
def pie():# 定义饼图数据num = [110, 136, 108, 48, 111, 112, 103]lab = ['哈士奇', '萨摩耶', '泰迪', '金毛', '牧羊犬', '吉娃娃', '柯基']data_pair_ = list(zip(lab, num))# 创建饼图对象,添加数据pie = (Pie().add('饼图',data_pair=data_pair_,rosetype='radius',radius=["20%", "45%"]))return pie# 创建一个可拖动页面,设置页面标题
page = Page(layout=Page.DraggablePageLayout, page_title='haha')# 添加各种图表到页面
page.add(bar(),line(),scatter(),pie()
)# 将页面保存为 HTML 文件,路径为 './大屏.html'
page.render('./大屏.html')

在这里插入图片描述

拖动图表排列顺序后,点击 Save Config 按钮,将下载的 chart_config.json 保存至 大屏.html 同目录下

from pyecharts.charts import Page  # 从 pyecharts.charts 模块中导入 Page 类
# 创建一个可拖动页面,设置页面标题
page = Page(layout=Page.DraggablePageLayout, page_title='haha')
# 保存配置后的文件
# page.save_resize_html(原html文件,拖拽保存的配置文件,成品的保存路径)
page.save_resize_html(r'./大屏.html',cfg_file='chart_config.json',dest="./大屏显示.html")

在这里插入图片描述

记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~

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

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

相关文章

Spring MVC(基于 Spring4.x)基础学习

一、SpringMVC概述 二、SpringMVC的HelloWorld 三、使用RequestMapping映射请求 四、映射请求参数&请求头 五、处理模型数据 六、视图和视图解析器 七、RESTful CRUD 八、SpringMVC表单标签&处理静态资源 九、数据转换&数据格式化&数据校验 十、处理JSON:使用…

Django学习全纪录:Django开发环境的搭建

导言 对于Django,它是Python的一个开发框架,之前系统地学习过。遗憾的是,对于一些遇到的问题,没有及时地记录下来。因此,我将它重新捡起,进行学习和实践。从搭建环境开始,重新去学习它&#xff…

django中的中间件

在Django中,中间件(Middleware)是一个轻量级的、底层的“插件”系统,用于全局地修改Django的输入或输出。每个中间件组件都负责执行一些特定的任务,比如检查用户是否登录、处理日志、GZIP压缩等。Django的中间件提供了…

Xubuntu16.04系统中修改系统语言和系统时间

1.修改系统语言 问题:下图显示系统语言不对 查看系统中可用的所有区域设置的命令 locale -a修改/etc/default/locale文件 修改后如下: # File generated by update-locale LANG"en_US.UTF-8" LANGUAGE"en_US:en"LANG"en_US…

STM32CubeMx+FreeRTOS+Clion运用事件组开发按键

文章目录 1、事件组2、范例2.1 功能2.2 步骤生成代码配置编写 API 函数介绍创建删除设置事件标志位等待事件标志位 3、参考文章 1、事件组 一个事件标志组有多个事件位,每个事件位表示了一个事件的标志。 比如我们用事件标志组的bit0表示事件A、bit1表示事件B、bit…

清华AutoGPT:掀起AI新浪潮,与GPT4.0一较高下

引言: 随着人工智能技术的飞速发展,自然语言处理(NLP)领域迎来了一个又一个突破。最近,清华大学研发的AutoGPT成为了业界的焦点。这款AI模型以其出色的性能,展现了中国在AI领域的强大实力。 目录 引言&…

DOC主题 WordPress博客、文库、资讯主题

主题专为博客、自媒体、资讯类的网站设计开发,适合做博客、文库、帮助中心的主题。 演示站:做好服务 - 服务器故障、网站故障、宝塔问题快速排查与修复 截图 代码非常简练,主题下载地址:DOC主题.zip

数据结构——线性表

逻辑结构——线性表 1.线性表的定义(逻辑结构) 要点: 相同数据类型有限序列 几个概念: 是线性表中的“第i个”元素线性表中的位序 是表头元素;是表尾元素。 除第一个元素外,每个元素有且仅有一个直接前驱&…

第4讲 小程序首页实现

首页 create.vue <template><view class"vote_type"><view class"vote_tip_wrap"><text class"type_tip">请选择投票类型</text><!-- <text class"share">&#xe739;分享给朋友</text&g…

相机图像质量研究(21)常见问题总结:CMOS期间对成像的影响--隔行扫描/逐行扫描

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

树和堆的精讲

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

《Go 简易速速上手小册》第1章:Go 语言基础(2024 最新版)

文章目录 1.1 Go 语言的安装与环境配置1.1.1 基础知识讲解案例 Demo&#xff1a;简单的 Go 程序 1.1.2 重点案例&#xff1a;搭建一个 Go Web 服务准备工作步骤 1&#xff1a;创建项目目录步骤 2&#xff1a;编写 Web 服务代码步骤 3&#xff1a;运行你的 Web 服务步骤 4&#…

【开源】JAVA+Vue.js实现天然气工程运维系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程 12.2.2 流程 22.3 各角色功能2.3.1 系统管理员功能2.3.2 用户服务部功能2.3.3 分公司&#xff08;施工单位&#xff09;功能2.3.3.1 技术员角色功能2.3.3.2 材料员角色功能 2.3.4 安…

沁恒CH32V30X学习笔记01--创建工程

资料下载 https://www.wch.cn/products/CH32V307.html? 下载完成后安装MounRiver Studio(MRS) 创建工程 修改时钟144M printf重定向 修改外部晶振频率位置 添加自定义文件 添加目录

动态头部:统一目标检测头部与注意力

论文地址:https://arxiv.org/pdf/2106.08322.pdf ai阅读论文_论文速读_论文阅读软件-网易有道速读 创新点是什么? 这篇文档的创新点是提出了一种统一的方法&#xff0c;将对象检测头和注意力机制结合起来。作者在文中提出了一种称为Dynamic Head的方法&#xff0c;通过引入…

掌握Go并发:Go语言并发编程深度解析

&#x1f3f7;️个人主页&#xff1a;鼠鼠我捏&#xff0c;要死了捏的主页 &#x1f3f7;️系列专栏&#xff1a;Golang全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&…

LabVIEW智能温度监控系统

LabVIEW智能环境监测系统 介绍了一个基于LabVIEW的智能环境监测系统的开发过程。该系统在实时监测和分析环境参数&#xff0c;如温度、湿度、气体浓度等&#xff0c;以提供精确的数据支持&#xff0c;确保环境安全与健康。通过高效的数据处理和友好的用户界面&#xff0c;系统…

pytest 框架自动化测试

随笔记录 目录 1. 安装 2. 安装pytest 相关插件 2.1 准备阶段 2.2 安装 2.3 验证安装成功 3. pytest测试用例的运行方式 3.1 主函数模式 3.1.1 主函数执行指定文件 3.1.2 主函数执行指定模块 3.1.3 主函数执行某个文件中的某个类、方法、函数 3.1.4 主函数执行生…

Mysql Day06

sql优化 插入数据 大批量插入数据 主键顺序插入性能高于乱序插入 load data local infile /root/load_user_100w_sort.sql into table tb_user fields terminated by , lines terminated by \n ; 主键优化 这个黄色的都是一个一个Page 主键乱序插入之后会变成1-3-2&#x…

2.18 C++ day6

思维导图 以下是一个简单的比喻&#xff0c;将多态概念与生活中的实际情况相联系&#xff1a; 比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴子等。现在&#xff0c;动物园里有一位讲…
推荐文章