100天精通Python(可视化篇)——第94天:Pyecharts绘制多种炫酷散点图(参数说明+代码实战)

news2024/11/26 4:26:57

文章目录

  • 专栏导读
  • 一、Scatter(散点图)
    • 1. add函数
    • 2. 数据项
  • 二、基础气泡图
  • 三、多维度散点图
  • 四、添加分割线
  • 五、动态涟漪散点图
  • 六、不同形状散点图
  • 七、3D散点图

专栏导读

🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)
  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
    在这里插入图片描述
    在这里插入图片描述

一、Scatter(散点图)

1. add函数

在Pyecharts中,Scatter类的add函数有以下参数:

  • name:str,数据系列的名称。
  • xaxis_data:Sequence,x轴的数据。
  • yaxis_data:Sequence,y轴的数据。
  • symbol_size:Union[int, Sequence],散点的大小。如果为int类型,则所有散点的大小都相同;如果为Sequence类型,则可以为每个散点指定不同的大小。
  • label_opts:LabelOpts,散点的标签配置项。
  • tooltip_opts:TooltipOpts,散点的提示框配置项。
  • itemstyle_opts:ItemStyleOpts,散点的图形样式配置项。
  • encode:Dict,数据编码配置项。用于指定x轴和y轴的数据在数据源中的位置,例如:{“x”: 0, “y”: 1}。

其中,name、xaxis_data和yaxis_data参数是必需的,其他参数都是可选的。

示例代码:

scatter = Scatter()
scatter.add(
    name="散点图",
    xaxis_data=[1, 2, 3, 4, 5],
    yaxis_data=[10, 20, 30, 40, 50],
    symbol_size=10,
    label_opts=opts.LabelOpts(formatter="{@[2]}"),
    tooltip_opts=opts.TooltipOpts(formatter="{@[2]}"),
    itemstyle_opts=opts.ItemStyleOpts(color="red"),
    encode={"x": 0, "y": 1},
)

这个例子创建了一个Scatter对象,然后使用add函数添加了一个散点数据系列,指定了x轴和y轴的数据,散点的大小为10,标签格式化为第三个数据,提示框格式化为第三个数据,散点的颜色为红色,数据编码指定x轴数据在第0个位置,y轴数据在第1个位置。

2. 数据项

class ScatterItem(
    name: Union[str, Numeric] = None,  # 数据系列的名称,可以是字符串或数字
    value: Union[str, Numeric] = None,  # 散点的值,可以是字符串或数字
    symbol: Optional[str] = None,  # 散点的标记符号,可选参数,默认为None
    symbol_size: Union[Sequence[Numeric], Numeric] = None,  # 散点的大小,可以是数字或数字序列
    symbol_rotate: Optional[Numeric] = None,  # 散点的旋转角度,可选参数,默认为None
    symbol_keep_aspect: bool = False,  # 散点的宽高比是否保持一致,可选参数,默认为False
    symbol_offset: Optional[Sequence] = None,  # 散点的偏移量,可选参数,默认为None
    label_opts: Union[LabelOpts, dict, None] = None,  # 散点的标签配置项,可以是LabelOpts对象、字典或None
    itemstyle_opts: Union[ItemStyleOpts, dict, None] = None,  # 散点的图形样式配置项,可以是ItemStyleOpts对象、字典或None
    tooltip_opts: Union[TooltipOpts, dict, None] = None,  # 散点的提示框配置项,可以是TooltipOpts对象、字典或None
)

这个类是用于表示散点图中的每个散点数据项。参数的具体含义已在注释中进行了解释。

二、基础气泡图

要使用Pyecharts绘制普通气泡图,可以按照以下步骤进行链式写法的绘制:

  1. 导入所需模块:
from pyecharts import options as opts
from pyecharts.charts import Scatter
  1. 创建一个Scatter实例,并设置全局配置项:
scatter = Scatter().set_global_opts(
    title_opts=opts.TitleOpts(title="普通气泡图")
)
  1. 添加数据系列:
scatter.add_xaxis(x_data)  # 设置x轴数据
scatter.add_yaxis("", y_data)  # 设置y轴数据
  1. 设置气泡的大小和颜色:
scatter.set_series_opts(
    label_opts=opts.LabelOpts(is_show=False),  # 不显示标签
    itemstyle_opts=opts.ItemStyleOpts(color="rgba(255, 0, 0, 0.6)"),  # 设置气泡颜色
    symbol_size=20  # 设置气泡大小
)
  1. 渲染图表,并将结果保存为HTML文件:
# 渲染图表
scatter.render_notebook()
scatter.render("scatter.html")

完整代码示例:

from pyecharts import options as opts
from pyecharts.charts import Scatter

# 数据
x_data = [1, 2, 3, 4, 5]
y_data = [10, 20, 30, 40, 50]

# 创建Scatter实例
scatter = Scatter().set_global_opts(
    title_opts=opts.TitleOpts(title="普通气泡图")
)

# 添加数据系列
scatter.add_xaxis(x_data)
scatter.add_yaxis("", y_data)

# 设置气泡的大小和颜色
scatter.set_series_opts(
    label_opts=opts.LabelOpts(is_show=False),
    itemstyle_opts=opts.ItemStyleOpts(color="rgba(255, 0, 0, 0.6)"),
    symbol_size=20
)

# 渲染图表
scatter.render_notebook()
scatter.render("scatter.html")

运行完上述代码后,运行结果:
在这里插入图片描述

三、多维度散点图

# 导入需要的模块
from pyecharts.charts import Scatter
from pyecharts.faker import Faker

# 创建Scatter对象
scatter = (
    Scatter()
    # 添加x轴数据
    .add_xaxis(Faker.choose())
    # 添加y轴数据,系列名称为"商家A"
    .add_yaxis("商家A", Faker.values())
    # 添加y轴数据,系列名称为"商家B"
    .add_yaxis("商家B", Faker.values())
    # 设置全局配置项
    .set_global_opts(
        # 设置标题
        title_opts=opts.TitleOpts(title="多维度散点图"),
        # 设置视觉映射配置项,类型为"size",最大值为150,最小值为20
        visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),
    )
)

# 在Jupyter Notebook中渲染图表
scatter.render_notebook()

运行结果:
在这里插入图片描述

四、添加分割线

通过散点图与分割线相互结合:

import numpy as np
from pyecharts import options as opts
from pyecharts.charts import Scatter

# 生成随机数据
np.random.seed(0)
data = np.random.randn(100, 4)

# 使用链式写法绘制散点图
scatter = (
    Scatter()
    .add_xaxis(list(range(100)))
    .add_yaxis("A", data[:, 0].tolist())
    .add_yaxis("B", data[:, 1].tolist())
    .add_yaxis("C", data[:, 2].tolist())
    .add_yaxis("D", data[:, 3].tolist())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="多维度散点图"),
        xaxis_opts=opts.AxisOpts(name="Index"),
        yaxis_opts=opts.AxisOpts(name="Value"),
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
)

# 添加分割线
line = (
    Scatter()
    .add_xaxis(list(range(100)))
    .add_yaxis("Line", [0] * 100, label_opts=opts.LabelOpts(is_show=False))
    .set_series_opts(
        symbol_size=0,
        linestyle_opts=opts.LineStyleOpts(type_="dashed", color="red"),
        label_opts=opts.LabelOpts(is_show=False),
    )
)


scatter.render_notebook()

运行结果:
在这里插入图片描述

五、动态涟漪散点图

# 导入所需的类和函数
from pyecharts import options as opts
from pyecharts.charts import EffectScatter
from pyecharts.faker import Faker

# 创建 EffectScatter 对象,并设置 x 轴数据和 y 轴数据
c = (
    EffectScatter()
    .add_xaxis(Faker.choose())  # 添加 x 轴数据,这里使用了 Faker.choose() 生成随机数据
    .add_yaxis("", Faker.values())  # 添加 y 轴数据,这里使用了 Faker.values() 生成随机数据
    .set_global_opts(title_opts=opts.TitleOpts(title="动态涟漪散点图"))  # 设置全局配置,标题为"动态涟漪散点图"
)

# 在 Jupyter Notebook 中展示
c.render_notebook()

运行结果:
在这里插入图片描述

六、不同形状散点图

在下面的代码中,首先创建了一个Scatter对象,然后通过set_global_opts()方法设置了图表的标题和大小,以及图表的颜色映射范围。接下来,通过add_xaxis()方法设置x轴的数据,通过add_yaxis()方法分别添加了四个系列的散点图数据,并设置了不同的形状和大小。

from pyecharts import options as opts
from pyecharts.charts import Scatter

# 创建散点图对象
scatter = Scatter()

# 设置图表标题和大小
scatter.set_global_opts(
    title_opts=opts.TitleOpts(title="不同形状散点图"),
    visualmap_opts=opts.VisualMapOpts(type_="size", max_=50, min_=20),
    legend_opts=opts.LegendOpts(pos_right="10%", pos_bottom="15%"),
)

# 添加散点图数据并设置样式
scatter.add_xaxis(['A', 'B', 'C', 'D', 'E'])
scatter.add_yaxis("圆形", [10, 20, 30, 40, 50], symbol_size=10)
scatter.add_yaxis("矩形", [20, 30, 40, 50, 60], symbol='rect', symbol_size=15)
scatter.add_yaxis("三角形", [30, 40, 50, 60, 70], symbol='triangle', symbol_size=20)
scatter.add_yaxis("星形", [40, 50, 60, 70, 80], symbol='star', symbol_size=25)



# 在 Jupyter Notebook 中展示
scatter.render_notebook()

运行结果:
在这里插入图片描述在scatter.add_yaxis()函数中,symbol参数用于设置散点图的形状。下面是symbol参数的全部参数说明:

  • ‘circle’:圆形
  • ‘rect’:矩形
  • ‘roundRect’:圆角矩形
  • ‘triangle’:三角形
  • ‘diamond’:菱形
  • ‘pin’:水滴形
  • ‘arrow’:箭头形
  • ‘none’:无形状,即不显示形状,只显示散点

另外,symbol参数还可以是一个自定义的路径字符串,表示使用自定义的形状图片,例如’svg://path/to/custom_symbol.svg’。

在使用scatter.add_yaxis()函数时,可以根据需要选择合适的形状参数来设置散点图的形状。

七、3D散点图

  1. 导入所需的类和函数,在代码中导入所需的类和函数,包括Scatter3D类和configure函数。示例代码如下:
from pyecharts.charts import Scatter3D
from pyecharts import options as opts
from pyecharts.render import notebook
import random
  1. 创建3D散点图,使用Scatter3D类创建3D散点图,设置散点的属性,如位置、大小、颜色等。示例代码如下:
scatter_data = [[random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)] for _ in range(80)]

scatter3d = (
    Scatter3D()
    .add("", scatter_data)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="3D散点图"),
        visualmap_opts=opts.VisualMapOpts(max_=10),
    )
)

在上述代码中,scatter_data是一个包含多个散点坐标的列表,每个散点坐标由三个值表示(x、y、z)。

  1. 输出到Jupyter Notebook,使用notebook.render_notebook函数将图表输出到Jupyter Notebook中。示例代码如下:
notebook.render_notebook(scatter3d)
  1. 完整代码:
from pyecharts.charts import Scatter3D
from pyecharts import options as opts
import random

scatter_data = [[random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)] for _ in range(80)]

scatter3d = (
    Scatter3D()
    .add("", scatter_data)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="3D散点图"),
        visualmap_opts=opts.VisualMapOpts(max_=10),
    )
)

scatter3d.render_notebook()

通过以上步骤,就可以使用Pyecharts的链式写法绘制3D散点图并将结果输出到Jupyter Notebook中。图表将直接在Notebook中渲染和显示,无需额外的保存和导出操作。

运行结果:
在这里插入图片描述

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

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

相关文章

CentOS7 图形化方式安装 Oracle19C

CentOS7 图形化方式安装 Oracle19C 操作系统:CentOS7 Oracle: 19C 远程连接工具:Xmanager Power Suite 7 安装常用工具和依赖 yum -y install vim tar net-tools wget perl python3 readline* deltarpm python-deltarpm \zip unzip bc compa…

天翎群晖NAS为全文检索插翅起飞

编者按:企业的文档资料随着企业的业务发展会越来越多,想要某个资料的时候,最怕找不到想要的资料,这时KMS的全文检索功能就非常重要了,只需只言片语的零星关键字,查找文档没压力。 关键词:全文检…

Liunx服务器磁盘挂载

一:查看磁盘信息 [rootxxx ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 253:0 0 100G 0 disk ├─vda1 …

【动态规划算法】第三题:746.使用最小花费爬楼梯

💖作者:小树苗渴望变成参天大树 🎉作者宣言:认真写好每一篇博客 🎊作者gitee:gitee 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作…

能代替纸质笔记本的记录软件哪个好?

在很长一段时间里,纸质笔记本一直是我们记录信息的常用工具。然而随着记录需求的不断增加,纸质笔记本也暴露了一些不足之处。首先,它们的存储容量有限,很难管理大量的笔记。其次,如果纸质笔记本遗失或损坏,…

上门家政小程序|上门保洁APP|家政服务预约上门软件开发

上门家政小程序对于上门保洁服务非常方便。下面是一些简单介绍:   预约便捷:通过上门家政小程序,用户可以随时随地进行保洁服务的预约。无论是在家中、办公室还是旅途中,用户只需打开小程序,选择合适的日期和时间&am…

zabbix基础1——发展起源、基础安装、配置文件参数释义

文章目录 一、基本了解二、配置文件详解2.1 服务端配置文件2.2 客户端配置文件 三、源码安装3.1 安装服务端3.2 配置web前端文件3.3 访问网页 一、基本了解 前提背景: Zabbix是一个企业级分布式开源监控解决方案,由 Alexei Vladishev 创建,目…

gitee配置ssh公钥免密登录

如下配置,即可让本电脑直接推送gitee,而无需输入码云的密码 下载git配置用户名:git config --global user.name “zhangsan” //以后的提交人就是这个名字配置邮箱:git config --global user.email “zhangsanqq.com” //注册账号…

C# 在控制台整齐的输出 DataTable

效果: 一、前言 在 Winform 平台,可以用 DataGridView 这样的控件来显示数据库的表单数据,但在 C# 控制台项目中,如果有用到数据库查询,我们想看看查询语句的效果,就比较困难了,比如,我随意写了一个控制台输出,代码如下: using System.Data;namespace CSharpConnec…

使用 Elasticsearch

了解如何创建索引,添加,删除,更新文档 参考文档 开始使用 Elasticsearch 1 本文用到Elasticsearch和Kibana 可以看之前的两篇先安装好 Elasticsearch 安装 Kibana安装 Elasticsearch 里的接口都是通过 REST 接口来实现的。 GET 读取数…

matlab——制作箱线图

在数据分析中,如果不知道数据分布的情况下很难判断中位数是否有效或者存在离群点。 离群点指偏离大多数点规律的点。 为了更有效对整体数据进行划分,提出四分位点的概念。即选取概念下界、0.25位点、0.75位点、概念上界。 有一种专门表现四分位点的图像叫…

@Import注解源码解析

文章目录 一、简介二、Import注解的几种用法三、Import注解源码解析1、ConfigurationClassPostProcessor2、ConfigurationClassPostProcessor 类的 postProcessBeanDefinitionRegistry 方法3、ConfigurationClassParser 类的 parse 方法4、处理 ImportBeanDefinitionRegistrar …

C++实现打包工具代码框架+多种设计模式以及C++特性(附源码)

C++常用功能源码系列 文章目录 C++常用功能源码系列前言一、打包工具二、packtool框架前言 本文是C/C++常用功能代码封装专栏的导航贴。部分来源于实战项目中的部分功能提炼,希望能够达到你在自己的项目中拿来就用的效果,这样更好的服务于工作实践。 专栏介绍:专栏讲本人近…

沟通漏斗模型

沟通漏斗模型 沟通漏斗理论|是指信息在用语言这种形式,传递在过程中,逐渐衰减的现象。 模型介绍 「沟通漏斗模型」很多时候你说出来的≠别人听到的!对沟通者来说,如果心里想的是100%的信息,受限于语言表达的技巧&…

海康威视(Hikvision) 摄像头-CVE-2017-7921漏洞复现

漏洞描述 许多HikvisionIP摄像机包含一个后门,允许未经身份验证的模拟任何配置的用户帐户。 漏洞复现 访问漏洞url 检索用户与用户列表 ttp://your-ip/Security/users?authYWRtaW46MTEK 从下图可知该摄像只有admin一个账户 获取监控快照 http://your-ip/onvif…

北京阿里云代理商:阿里云CDN流量包的价格和流量消耗计算?

标题:阿里云CDN流量包的价格和流量消耗计算?成本控制策略 本文由阿里云代理商[上海聚搜信息技术有限公司] 撰写。 面对企业或个人用户在使用阿里云CDN进行内容分发时,常常会有一个疑问,那就是如何计算阿里云CDN流量包的价格以及流…

社区底商需要加入团购?社区团购的运营到底应该怎么做?

社区团购作为越来越多社区底商老板的“副业”的模式,社区团购为门店带来的巨大盈利增长点,但传统门店盈利单一、客流有限等问题依然严重,门店改牌也是迟早的事情。 对于传统门店来说,生死存亡下想要转型线上,往往面临开…

TCP之延时Nagle算法实验详解

TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一个连接会设置MS…

系统盘崩溃挂盘进入救援模式选择continue无法进入

问题: 系统盘崩溃挂盘进入救援模式选择continue无法进入,始终读码或者黑屏。 原因: 出现这个界面一般是在选择 "1 Continue" 后,某些文件系统没有成功 mount导致 解决方法: 再次进入救援模式&#xff0c…

(五)人工智能应用--深度学习原理与实战--Linux系统Tensorflow平台搭建

作为使用最广泛的深度学习框架,TensorfLow支持Windows、Linux、MacOs等多种操作系统。Linux系统作为服务器部署环境十分常见,本章我们将学习在Linux操作系统下Tensorflow的安装及基于NVIDIA GPU的Cuda(GPU并行计算框架)、cudnn(深度学习加速平台)的安装配置。 主要…