Pyecharts炫酷散点图构建指南【第50篇—python:炫酷散点图】

文章目录

  • Pyecharts炫酷散点图构建指南
    • 引言
    • 安装Pyecharts
    • 基础散点图
    • 自定义散点图样式
    • 渐变散点图
    • 动态散点图
    • 高级标注散点图
    • 多系列散点图
    • 3D散点图
    • 时间轴散点图
    • 笛卡尔坐标系下的极坐标系散点图
  • 总结:

Pyecharts炫酷散点图构建指南

引言

在数据可视化领域,散点图是一种常用而强大的工具,用于展示两个变量之间的关系。Pyecharts是一个基于Echarts的Python可视化库,它提供了丰富的图表类型,包括了炫酷的散点图。本文将介绍如何使用Pyecharts绘制多种炫酷的散点图,包括参数说明和实际代码示例。

安装Pyecharts

在开始之前,首先需要安装Pyecharts库。可以使用以下命令进行安装:

pip install pyecharts

基础散点图

首先,让我们从一个基础的散点图开始。以下是一个简单的示例代码:

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

# 数据准备
data = [
    [10, 20],
    [20, 30],
    [30, 40],
    [40, 50],
    [50, 60],
]

# 绘制基础散点图
scatter = (
    Scatter()
    .add_xaxis(xaxis_data=[item[0] for item in data])
    .add_yaxis(series_name="scatter", y_axis=[item[1] for item in data])
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="基础散点图"))
)

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

在这个例子中,我们使用了Scatter类来创建一个散点图,通过add_xaxisadd_yaxis方法设置x轴和y轴的数据。可以通过set_global_opts方法设置全局选项,例如图表标题。

image-20240202144635054

自定义散点图样式

Pyecharts允许我们自定义散点图的样式,包括点的颜色、大小和形状。以下是一个自定义散点图样式的示例:

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

# 数据准备
data = [
    [10, 20, 30],
    [20, 30, 40],
    [30, 40, 50],
    [40, 50, 60],
    [50, 60, 70],
]

# 绘制自定义散点图样式
scatter = (
    Scatter()
    .add_xaxis(xaxis_data=[item[0] for item in data])
    .add_yaxis(
        series_name="scatter",
        y_axis=[item[1] for item in data],
        symbol="circle",  # 设置点的形状
        symbol_size=20,   # 设置点的大小
        itemstyle_opts=opts.ItemStyleOpts(color="red"),  # 设置点的颜色
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="自定义散点图样式"))
)

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

在这个例子中,我们通过symbol参数设置点的形状,通过symbol_size参数设置点的大小,通过itemstyle_opts参数设置点的颜色。

渐变散点图

渐变散点图可以通过颜色的深浅来表达数据的变化程度。以下是一个渐变散点图的示例:

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

# 数据准备
data = [
    [10, 20, 30],
    [20, 30, 40],
    [30, 40, 50],
    [40, 50, 60],
    [50, 60, 70],
]

# 绘制渐变散点图
scatter = (
    Scatter()
    .add_xaxis(xaxis_data=[item[0] for item in data])
    .add_yaxis(
        series_name="scatter",
        y_axis=[item[1] for item in data],
        symbol_size=20,
        itemstyle_opts=opts.ItemStyleOpts(
            color=opts.ColorMappingType.LINEAR,
            color_mapping=[(0, 'blue'), (50, 'green'), (70, 'red')]
        ),
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="渐变散点图"))
)

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

在这个例子中,我们通过itemstyle_opts参数的color_mapping设置渐变颜色,其中(0, 'blue')表示数值为0时的颜色为蓝色,(50, 'green')表示数值为50时的颜色为绿色,以此类推。

动态散点图

动态散点图是一种展示随时间变化的数据分布的图表。下面是一个动态散点图的示例:

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

# 模拟时间序列数据
time_series_data = [
    [(10, 20), 0],
    [(20, 30), 1],
    [(30, 40), 2],
    [(40, 50), 3],
    [(50, 60), 4],
]

# 绘制动态散点图
scatter = (
    Scatter()
    .add_xaxis(xaxis_data=[item[0][0] for item in time_series_data])
    .add_yaxis(
        series_name="scatter",
        y_axis=[item[0][1] for item in time_series_data],
        symbol_size=20,
        symbol="circle",
        animation_opts=opts.AnimationOpts(
            animation_delay=1000,  # 设置动画延迟时间
            animation_easing="elasticOut",  # 设置动画缓动效果
        ),
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="动态散点图"))
)

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

在这个例子中,我们通过animation_opts参数设置了动画的延迟时间和缓动效果,使得散点图在时间上呈现动态变化。

高级标注散点图

有时候,我们希望在散点图中对特定点进行标注,以突出重要的数据。以下是一个高级标注散点图的示例:

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

# 数据准备
data = [
    {"value": [10, 20], "symbol": "circle", "name": "A"},
    {"value": [20, 30], "symbol": "rect", "name": "B"},
    {"value": [30, 40], "symbol": "triangle", "name": "C"},
    {"value": [40, 50], "symbol": "diamond", "name": "D"},
    {"value": [50, 60], "symbol": "arrow", "name": "E"},
]

# 绘制高级标注散点图
scatter = (
    Scatter()
    .add_xaxis(xaxis_data=[item["value"][0] for item in data])
    .add_yaxis(
        series_name="scatter",
        y_axis=[item["value"][1] for item in data],
        symbol_size=20,
        symbol=opts.GraphNode().symbol,  # 设置节点的形状
        itemstyle_opts=opts.ItemStyleOpts(color="red"),  # 设置点的颜色
        label_opts=opts.LabelOpts(
            is_show=True,  # 显示标签
            formatter="{b}",  # 标签格式
            position="right",  # 标签位置
        ),
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="高级标注散点图"))
)

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

在这个例子中,我们通过传入包含每个点详细信息的字典列表,可以分别设置每个点的形状、颜色和标签等属性。

image-20240202144703500

多系列散点图

有时候,我们需要在同一张图上展示多个数据系列的散点图,以便更好地比较它们之间的关系。以下是一个多系列散点图的示例:

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

# 数据准备
data_series1 = [[10, 20], [20, 30], [30, 40], [40, 50], [50, 60]]
data_series2 = [[15, 25], [25, 35], [35, 45], [45, 55], [55, 65]]

# 绘制多系列散点图
scatter = (
    Scatter()
    .add_xaxis(xaxis_data=[item[0] for item in data_series1])
    .add_yaxis(
        series_name="Series 1",
        y_axis=[item[1] for item in data_series1],
        symbol_size=20,
    )
    .add_xaxis(xaxis_data=[item[0] for item in data_series2])
    .add_yaxis(
        series_name="Series 2",
        y_axis=[item[1] for item in data_series2],
        symbol_size=20,
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="多系列散点图"))
)

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

在这个例子中,我们通过调用add_xaxisadd_yaxis方法分别添加两个数据系列,通过series_name参数为每个系列命名,使其在图例中显示。

3D散点图

如果数据具有三个维度,我们可以使用3D散点图来更直观地展示数据分布。以下是一个3D散点图的示例:

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

# 数据准备
data_3d = [[10, 20, 30], [20, 30, 40], [30, 40, 50], [40, 50, 60], [50, 60, 70]]

# 绘制3D散点图
scatter_3d = (
    Scatter3D()
    .add_xyz(
        xaxis_data=[item[0] for item in data_3d],
        yaxis_data=[item[1] for item in data_3d],
        zaxis_data=[item[2] for item in data_3d],
        symbol_size=20,
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="3D散点图"))
)

# 渲染图表
scatter_3d.render("3d_scatter.html")

在这个例子中,我们使用了Scatter3D类来创建3D散点图,并通过add_xyz方法设置x、y、z轴的数据。可以通过调整symbol_size参数来控制点的大小。

时间轴散点图

时间轴散点图是一种能够展示随时间推移而变化的数据关系的图表。以下是一个时间轴散点图的示例:

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

# 模拟时间序列数据
timeline_data = {
    "time1": [[10, 20], [20, 30], [30, 40], [40, 50], [50, 60]],
    "time2": [[15, 25], [25, 35], [35, 45], [45, 55], [55, 65]],
    "time3": [[18, 28], [28, 38], [38, 48], [48, 58], [58, 68]],
}

# 创建时间轴
timeline = Timeline()

# 绘制时间轴散点图
for time, data in timeline_data.items():
    scatter = (
        Scatter()
        .add_xaxis(xaxis_data=[item[0] for item in data])
        .add_yaxis(
            series_name="Series",
            y_axis=[item[1] for item in data],
            symbol_size=20,
        )
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(title_opts=opts.TitleOpts(title=f"时间轴散点图 - {time}"))
    )
    timeline.add(scatter, time)

# 渲染图表
timeline.render("timeline_scatter.html")

在这个例子中,我们使用Timeline类创建了一个时间轴,并在每个时间点上绘制了一个散点图。通过调整timeline_data字典中的数据,可以灵活地展示不同时间点的数据分布。

image-20240202144857748

笛卡尔坐标系下的极坐标系散点图

在某些场景下,我们可能需要在极坐标系下绘制散点图,以更好地表达数据之间的关系。以下是一个在笛卡尔坐标系下的极坐标系散点图的示例:

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

# 数据准备
data_polar = [
    [10, 20],
    [20, 30],
    [30, 40],
    [40, 50],
    [50, 60],
]

# 绘制笛卡尔坐标系下的极坐标系散点图
scatter_polar = (
    Scatter()
    .add_xaxis(xaxis_data=[item[0] for item in data_polar])
    .add_yaxis(
        series_name="scatter",
        y_axis=[item[1] for item in data_polar],
        symbol_size=20,
        coordinate_system="polar",  # 设置坐标系为极坐标系
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="笛卡尔坐标系下的极坐标系散点图"))
)

# 渲染图表
scatter_polar.render("polar_scatter.html")

在这个例子中,我们通过coordinate_system参数将坐标系设置为极坐标系。这使得散点图在极坐标系下展示,适用于展示循环或周期性的数据关系。

image-20240202144949219

总结:

本文介绍了使用Pyecharts库绘制多种炫酷散点图的方法,包括基础散点图、自定义样式、渐变散点图、动态散点图、高级标注散点图、多系列散点图、3D散点图、时间轴散点图以及在笛卡尔坐标系下的极坐标系散点图。通过这些示例,我们可以掌握如何使用Pyecharts库的不同功能来灵活绘制符合特定需求的散点图。

在实际应用中,根据数据的特点和分析目的,选择合适的散点图类型和调整参数,能够使得数据更为清晰易懂。例如,动态散点图适用于展示随时间变化的数据,而多系列散点图用于比较不同数据系列之间的关系,时间轴散点图则能够展示随时间推移的数据变化趋势。

Pyecharts库提供了丰富的参数和功能,可以满足各种散点图的绘制需求。通过本文的学习,读者可以更加熟练地使用Pyecharts库,制作出更加炫酷且具有信息传递力的散点图,为数据分析和可视化工作提供有力支持。希望本文对使用Pyecharts绘制散点图的实践有所启发,读者能够在具体项目中灵活运用这些技术。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GPGPU面临的工程困境闲聊

作者:蒋志强 本人同意他人对我的文章引用,但请在引用时注明出处,谢谢.作者:蒋志强 0.前言 2007年作为GPGPU的工程界元年至今,已经发展了接近小二十年了。这个领域是如此的重要,几乎影响了工业…

MacBook Pro (15 英寸,2018) 本地体验运行 6B 大模型

接上篇 在 Mac 上加速 PyTorch 训练,准备完 MPS 环境之后,开始在本地体验 ChatGLM3-6B 模型。 一、下载本仓库: (base) markvivvMBP dev % git clone https://github.com/THUDM/ChatGLM3Cloning into ChatGLM3... remote: Enumerating obje…

[SWPUCTF 2021 新生赛]include

他让我们传入一个flag值 我们传入即可看到代码部分 传入一个php的伪类即可 得到经过Base64加密的flag,解密即可

jupyter notebook更改工作目录的2个细节

详细步骤参考知乎原文: 如何更改Jupyter Notebook的默认工作路径? - 知乎 (zhihu.com​​​​​​) 步骤4中需要删除 #符号和后面的空格!一定要删除空格,否则会出现语法错误的报错 步骤5中,经过评论区提醒后&#xf…

酷开系统 | 酷开科技智慧AI带你领略神奇的世界

在这个科技日新月异的时代,AI已成为我们生活中不可或缺的一部分。它不仅改变了我们的生活方式,更让我们对未来充满期待。说起酷开系统中智慧AI的强大,着实让人叹为观止。无论是语音识别、数据整理还是语言处理,智慧AI都在不断地突…

【C++入门到精通】C++的IO流(输入输出流) [ C++入门 ]

阅读导航 引言一、C语言的输入与输出二、流是什么三、CIO流1. C标准IO流(1)istream(2)ostream(3)iostream(4)cin 和 cout 2. C文件IO流(1)ifstream&#xff0…

如何在Windows部署GoLand并通过SSH远程连接Linux服务器

文章目录 1. 安装配置GoLand2. 服务器开启SSH服务3. GoLand本地服务器远程连接测试4. 安装cpolar内网穿透远程访问服务器端4.1 服务器端安装cpolar4.2 创建远程连接公网地址 5. 使用固定TCP地址远程开发 本文主要介绍使用GoLand通过SSH远程连接服务器,并结合cpolar内…

1 初识JVM

JVM(Java Virtual Machine),也就是 “Java虚拟机”。 对于第三点功能:即时编译 常见的JVM 默认安装在JDK中的虚拟机为HotSpot:可以用“java -version”进行查看

网络时间协议NTP工作模式

单播服务器/客户端模式 单播服务器/客户端模式运行在同步子网中层数较高层上。这种模式下,需要预先知道服务器的IP地址。 客户端:运行在客户端模式的主机(简称客户端)定期向服务器端发送报文,报文中的Mode字段设置为3(客户端模式)。当客户端接收到应答报文时,客户端会…

RHCE 综合项目-博客

目录 业务需求 一、准备工作 1、配置静态IP 2、修改主机名及hosts映射 3、开启防火墙 4、时间同步 5、配置免密ssh登录 二、环境搭建 1、Server-web端安装LAMP环境软件 2、Server-NFS-DNS端上传博客软件 3、Server-NFS-DNS端设置NFS共享 三、Server-web设置 1、挂…

新手从零开始学习数学建模论文写作(美赛论文临时抱佛脚篇)

本文记录于数学建模老哥视频的学习过程中。b站视频:http://【【零基础教程】老哥:数学建模算法、编程、写作和获奖指南全流程培训!】https://www.bilibili.com/video/BV1kC4y1a7Ee?p50&vd_sourceff53a726c62f94eda5f615bd4a62c458 目录…

四、Redis之配置文件

redis配置文件的名称 redis.conf 通过命令 find / -name redis.confvim redis.conf通过 : set nu 设置行号: set nonu 取消行号/关键字 搜索关键字: set noh 取消高亮选择4.1 Units 配置大小单位,开头定义了一些基本的度量单位,只支持 bytes&#…

多线程有三个必须要保证的特性,才能正常运行(三个特性是:有序性,可见性,原子性)JMM的作用就是保证这三个特征

有序性的原因,和保证措施(as-if-serial) JVM执行代码时,可能会优化编译器和优化CPU的性能发挥,所以会进行对 代码顺序调整。当然,此顺序会保证as-if-serial(也就是再怎么优化顺序,单…

Spring-mvc、Spring-boot中如何在调用同类方法时触发AOP

1. 问题描述 Spring-mvc和Spring-boot中aop可以实现代理的功能,我们可以借此实现事务和日志记录或者限流等多种操作。但是,如果你在一个方法中调用其同类下的其他方法的时候不会触发AOP。本文主要说明其原因及解决办法和实现原理。 2. 原因 AIOP的本质是…

网络编程套接字(3)

网络编程套接字 简单的TCP英译汉服务器地址转换函数字符串IP转整数IP整数IP转字符串IP关于inet_ntoa函数并发场景下的inet_ntoa函数绑定失败问题TCP协议通讯流程数据传输的过程数据交互四次挥手的过程端口连接 简单的TCP英译汉服务器 之前我们是以回调的方式处理任务的&#x…

下载、安装Jenkins

进入官网 下载Jenkins https://www.jenkins.io 直接点击Download 一般是下长期支持版 因为它是java写的,你要运行它(Jenkins.war)肯定要有java环境 有两种方式去运行它,一种是下载Tomcat(是很经典的java容器或者jav…

手写分布式存储系统v0.2版本

引言 上回说到 手写分布式存储系统v0.1版本 ,已经实现了通过监听TCP端口并将数据写到本地磁盘的功能,今天咱们就继续往上面添砖加瓦 v0.2版本大致做以下功能 实现滚动写文件 代码优化 一、滚动写文件实现 由于咱们写文件是用的mmap进行文件写入&am…

2024美赛B题Searching for Submersibles原创论文完整版

Searching for Submersibles搜索潜水器 2024美赛B题Searching for Submersibles原创论文(共38页)部分内容,其余见文末: 整体框架: 1.1 问题背景与问题重述 海上游轮迷你潜水艇公司(MCMS)&…

算法基础——位运算,双指针,排序,二分

目录 1.位运算 与:& 或:| 取反&#xff1a;~ 异或&#xff1a;^或者是一个圈里有个加号的图像 移位:<<或者>> 例题:二进制中1的个数 例题&#xff1a;我们需要0 ​编辑 2.排序sort 例题&#xff1a;【模板】排序&#xff08;1&#xff09; 例题&…

大坑!react+thress.js

2. UI交互界面与Canvas画布叠加 | Three.js中文网 (webgl3d.cn) // canvas画布绝对定位 renderer.domElement.style.position absolute; renderer.domElement.style.top 0px; renderer.domElement.style.left 0px; renderer.domElement.style.zIndex -1; 我按照教程设置了…