数据分析 — 动画图 pyecharts

news2024/11/29 8:48:51

目录

  • 一、概念
  • 二、安装和导入
  • 三、绘图逻辑
  • 四、绘图
    • 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.coloradmin.cn/o/1455777.html

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

相关文章

猪圈Pigsty-PG私有RDS集群搭建教程

博客 https://songxwn.com/Pigsty-PG-RDS/ 简介 Pigsty 是一个更好的本地自建且开源 RDS for PostgreSQL 替代,具有以下特点: 开箱即用的 PostgreSQL 发行版,深度整合地理、时序、分布式、图、向量、分词、AI等 150 余个扩展插件&#xff…

OpenAI Sora —— 文生视频为何如此逼真?AI算法架构解析

OpenAI于2024年2月16日发布了名为Sora的文生视频模型。Sora是一个革命性的视频生成模型,可以根据用户输入的简单文本脚本自动生成与好莱坞级别画面相媲美的视频内容,其生成的视频不仅仅是对已有素材的拼接或剪辑合成,而是从像素级别全新“绘制…

【Jvm】性能调优(上)线上问题排查工具汇总

文章目录 一.互联网概念1.产品闭环和业务闭环2.软件设计中的上游和下游3.JDK运行时常量池 二.CPU相关概念1.查询CPU信息2.CPU利用率(CPU utilization)和 CPU负载(CPU load)2.1.如何理解CPU负载2.2.top命令查看CPU负载均值2.3.CPU负…

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

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

Android 15 第一个开发者预览版

点击查看:first-developer-preview-android15 点击查看:Get Android 15 2024年2月16日,谷歌发布 Android 15 第一个开发者预览版 翻译 由工程副总裁戴夫伯克发布 今天,我们发布了Android 15的首个开发者预览版,这样我们的开发者就…

[技术杂谈]Chat With RTX 介绍

英伟达(Nvidia)已于近日发布了名为“Chat with RTX”的Demo版个性化AI聊天机器人,并在其海外官网渠道中提供了下载链接。 据了解,这是一款适用于Windows平台的聊天机器人,由TensorRT-LLM提供支持,完全在本地…

机器人革命:从斯坦福的通用操作接口到OpenAI的Sora,塑造未来的合成学习

引言 在机器人成为平凡工匠和前沿先驱的时代,我们正站在新黎明的边缘。本文将探讨斯坦福大学的通用操作接口(UMI)及其与OpenAI的Sora如何共同推进机器人技术,开创未来学习的新纪元。 正文 斯坦福的通用操作接口(UMI…

电脑文件大爆炸,快用知识管理 | 咨询案例

在刚刚过去的春节假期,意料之外地完成了一次关于个人知识管理实践的咨询。为此,要特别感谢李博和双红老师的引介,使我有机会在帮助他人实践落地个人知识管理系统的同时,丰富了自己的经验积累和案例库。话不多说,来做个…

MySQL-锁(LOCK)

文章目录 1. 锁是什么?2. 全局锁2.1 相关语法2.2 特点 3. 表级锁3.1 表锁3.1.1 共享读锁(S)3.1.2 排它写锁(X) 3.2 元数据锁(MDL)3.2 意向锁(IS、IX) 4. 行级锁4.1 行锁 …

『随处指挥』:用这款APP,世界听你的!

在这个科技日新月异的时代,我们的生活被各种手机软件所包围。几乎每个人都有一个甚至多个手机,你是否也有遇到过需要远程操作自己某一台手机的场景呢?今天,我要向大家推荐一款神奇的手机远程操作神器,让你可以随时随地…

VTK使用指南:介绍

1、什么是可视化? 术语 不同的术语用于描述可视化。科学可视化是计算机科学领域的正式名称,包括用户界面、数据表示和处理算法、视觉表示和其他感官表示,如声音或触摸。术语数据可视化是用于描述可视化的另一个短语。数据可视化通常被解释为…

Apache Apisix网关系统历史漏洞复现分析

文章目录 前言CVE-2020-13945默认api令牌CVE-2021-45232未授权接口2.1 默认账户密码导致RCE2.2 未授权访问api接口RCE CVE-2022-24112 地址限制绕过CVE-2022-29266 JWT令牌伪造4.1 漏洞源码简析与修复4.2 漏洞环境搭建与复现 总结 前言 Apache APISIX 是一个动态、实时、高性能…

探索Linux系统中HTTP隧道技术的原理与实践

在Linux的世界里,HTTP隧道技术就像是一个神秘的魔法师,它能让你的网络请求穿越重重障碍,安全地到达目的地。今天,我们就来一起探索这个魔法师的奥秘,看看它是如何在Linux系统中施展魔法的。 首先,我们要明…

PFH特征描述符、对应关系可视化以及ICP配准

一、PFH特征描述符可视化 C #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/search/kdtree.h> #include <pcl/io/pcd_io.h> #include <pcl/features/normal_3d_omp.h>//使用OMP需要添加的头文件 #include <boos…

PyCharm - Project Interpreter (项目解释器)

PyCharm - Project Interpreter [项目解释器] References File -> Settings… -> Project: -> Project Interpreter References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

深入探讨Lambda表达式转换为委托类型的编译过程

了解了&#xff0c;如果要深入探讨Lambda表达式转换为委托类型的编译过程&#xff0c;我们需要关注C#编译器如何处理这个转换。这个过程涉及到编译时的类型推断、匿名方法的创建&#xff0c;以及生成对应的委托实例。我们来更详细地分析这个过程&#xff1a; 编译阶段 1. 解…

21. Merge Two Sorted Lists(合并两个有序链表)

问题描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 问题分析 我们只需要使用两个指针分别从两个链表的头部向后遍历整个链表&#xff0c;每一个次都让量个元素比较大小&#xff0c;小的元素并入的新的链表&#xf…

MySQL(1/3)

基本命令行操作 命令行连接 mysql -uroot -p 回车&#xff0c;然后在下一行输入密码&#xff0c;或者直接在p后写密码 修改密码 updata mysql.user set authentication_stringpassword(原密码) where userroot and Host localhost; 刷新权限 flush privileges; 查看所有数据库…

数据库索引面试的相关问题

查看索引的执行计划 索引失效的情况 1、索引列上做了计算&#xff0c;函数&#xff0c;类型转换等操作。索引失效是因为查询过程需要扫描整个索引并回表。代价高于直接全表扫描。 Like匹配使用了前缀匹配符“%abc” 字符串不加引号导致类型转换。 原因&#xff1a; 常见索…

03 SS之返回JSON+UserDetail接口+基于数据库实现RBAC

1. 返回JSON 为什么要返回JSON 前后端分离成为企业应用开发中的主流&#xff0c;前后端分离通过json进行交互&#xff0c;登录成功和失败后不用页面跳转&#xff0c;而是给前端返回一段JSON提示, 前端根据JSON提示构建页面. 需求: 对于登录的各种状态 , 给前端返回JSON数据 …