数据分析 — 动画图 pyecharts

目录

  • 一、概念
  • 二、安装和导入
  • 三、绘图逻辑
  • 四、绘图
    • 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.mzph.cn/news/688958.shtml

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

相关文章

mac东西拷不进硬盘怎么回事 mac东西拷不进硬盘怎么办 mac硬盘读不出来怎么解决 mac拷贝不了东西到u盘

有时候我们在使用mac的过程中,可能会遇到一些问题,比如mac东西拷不进硬盘。这是一种很常见的情况,但是会影响我们的工作和生活。那么,mac东西拷不进硬盘是怎么回事呢?mac东西拷不进硬盘又该怎么办呢?本文将…

ACM/NOI/CSP比赛经验分享

ACM/NOI/CSP比赛经验分享 一、引言 在信息学竞赛的舞台上,ACM/ICPC、NOI和CSP是众多学子梦寐以求的赛事。这些比赛不仅考验了参赛者的算法和数据结构知识,更是对团队协作、时间管理和心理素质的全面挑战。作为一名曾经参与过这些比赛的选手&#xff0c…

最新 Vue3、TypeScript、组合式API、setup语法糖 学习笔记

最新 Vue3、TypeScript、组合式API、setup语法糖 学习笔记 1、创建 Vue3 工程基于 `vue-cli` 创建(基于webpack实现)基于 `vite` 创建(推荐)2、Vue3 项目开发 `vscode` 插件推荐3、`Vue3` 核心语法【optionsAPI】与【CompositionAPI】Options API 的弊端Composition API 的…

洛谷 P8630 [蓝桥杯 2015 国 B] 密文搜索

题目描述 福尔摩斯从 X 星收到一份资料,全部是小写字母组成。 他的助手提供了另一份资料:许多长度为 8 的密码列表。 福尔摩斯发现,这些密码是被打乱后隐藏在先前那份资料中的。 请你编写一个程序,从第一份资料中搜索可能隐藏…

K8S更新部署docker的两种方法举例

前提条件 imagePullPolicy: Always 方法1:删除更新法 test-project为命名空间 --删除所有asp-svc下面的pod,这会导致从新拉取镜像 kubectl delete pods -l appasp-svc -n test-project --删除指定的pod,这会导致从新拉取镜像 kubectl delete pod …

JSON协议详解、语法及应用

文章目录 一、什么是JSON二、JSON协议结构协议结构包括要素JSON语法规则JSON的协议结构示例 三、JSON的特点四、JSON常见应用场景 一、什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易于阅读和编写的文本格式…

MVC 、DDD(domain-driven design,软件主动学习业务)、中台、Java SPI(Service Provider Interface)

文章目录 引言I 单体架构DDD实现版本1.1 核心概念1.2 DDD四层架构规范1.3 案例1.4 请求转发流程II 领域服务调用2.1 菱形对称架构2.2 中台III Java SPI3.1 概念3.2 实现原理3.3 例子:本地SPI找服务see alsojava -cp<

Linux第60步_“buildroot”构建根文件系统第2步_配置“buildroot下的busybox”并测试“buildroot”生成的根文件系统

1、查看“buildroot下的busybox”安装路径 打开终端 输入“ls回车” 输入“cd linux回车/”&#xff0c;切换到到“linux”目录 输入“ls回车”&#xff0c;查看“linux”目录下的文件和文件夹 输入“cd buildroot/回车”&#xff0c;切换到到“buildroot”目录 输入“ls…

MySQL的 4 种连接查询

目录 一、内连接&#xff08;INNER JOIN) 二、外连接&#xff08;LEFT JOIN、RIGHT JOIN 和 FULL JOIN&#xff09; 三、交叉连接&#xff08;CROSS JOIN&#xff09; 四、自连接 在 MySQL 中&#xff0c;常见的连接查询有四种&#xff1a;内连接&#xff08;INNER JOIN&am…

MyBatisPlus 整合 SpringBoot 遇见的问题

【异常】&#xff1a;Cause: java.sql.SQLSyntaxErrorException: Unknown column ‘udf1’ in ‘field list’… SQL: SELECT id,oper_id,btch_id,udf1, FROM scan_cyber Cause: java.sql.SQLSyntaxErrorException: Unknown column ‘udf1’ in ‘field list’; ,"messag…

【Web】CTFSHOW java反序列化刷题记录(部分)

目录 web846 web847 web848 web849 web850 web856 web857 web858 web846 直接拿URLDNS链子打就行 import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import java.lang.reflect.F…

Eclipse - Switch Workspace

Eclipse - Switch Workspace References Switch Workspace References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

用GPT-4开启“人类宝藏”

“GPT-4开启人类宝藏”意味着下面几个层面的含义&#xff1a; 知识与信息的访问&#xff1a;GPT-4作为一款强大的语言模型&#xff0c;通过学习海量的数据和信息资源&#xff0c;可以近乎实时地提供人类历史积累的知识、经验与智慧。用户可以通过询问或交互方式获取这些信息&am…

数据库所在服务器磁盘满了怎么办?

大家好&#xff0c;我是G探险者。 给大家拜个晚年哈&#xff0c;节后上班第一天&#xff0c;打开电脑&#xff0c;发现数据库服务器连不上了。 幸亏&#xff0c;节后第一天上班的人不太多&#xff0c;领导还没来&#xff0c;我一番鼓捣解决了这个问题。 所以做个总结&#xff0…

Linux网络----防火墙

一、安全技术和防火墙 1、安全技术 入侵检测系统&#xff08;Intrusion Detection Systems&#xff09;&#xff1a;特点是不阻断任何网络访问&#xff0c;量化、定位来自内外网络的威胁情况&#xff0c;主要以提供报警和事后监督为主&#xff0c;提供有针对性的指导措施和安…

【c++基础】合影效果

说明 小明和朋友们去爬香山&#xff0c;为美丽的景色所陶醉&#xff0c;想合影留念。如果他们站成一排&#xff0c;男生全部在左&#xff08;从拍照者的角度&#xff09;&#xff0c;并按照从矮到高的顺序从左到右排&#xff0c;女生全部在右&#xff0c;并按照从高到矮的顺序…

unity学习(19)——客户端与服务器合力完成注册功能(1)入门准备

逆向服务器用了三天的时间&#xff0c;但此时觉得一切都值&#xff0c;又可以继续学习了。 服务器中登录请求和注册请求由command变量进行区分&#xff0c;上一层的type变量都是login。 public void process(Session session, SocketModel model) {switch (model.Command){ca…

Cannot resolve symbol ‘IWXAPI‘

问题 Android 集成 微信登录报错 Cannot resolve symbol IWXAPI详细问题 笔者在App的build.gradle中已添加相关依赖&#xff0c;并完成Sync gradle操作。 笔者Project的build.gradle核心代码 buildscript {repositories {jcenter() // 原有 jCenter 引用可继续保留…

通过MetricsAPI监控pod资源使用情况(k8s资源监控,java)

1. 目的&#xff1a;简单监控pod 我想使用java监控k8s pod的资源的简单使用情况&#xff0c;但是k8s内部并没有采集资源的实现。 但是k8s提供了一套k8s的对接标准&#xff0c;只要适配这套标准&#xff0c;就可以通过kubelet采集资源数据&#xff0c;并且通过k8s api服务器输出…

Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列

写在开头 队列是Java中的一个集合接口&#xff0c;之前的文章已经讲解了List和Set&#xff0c;那么今天就来唠一唠它吧。队列的特点&#xff1a;存储的元素是有序的、可重复的。 队列的两大接口Queue vs Deque Queue 是单端队列&#xff0c;只能从一端插入元素&#xff0c;另…