使用Python制作气泡热图的示例代码

 更新时间:2025年07月10日 09:38:07   作者:Code_Verse  
在数据分析和可视化中,气泡热图是一种非常直观的工具,可以展示数据之间的关系和强度,下面小编就来和大家详细讲讲如何用Python制作一个气泡热图吧

在数据分析和可视化中,气泡热图是一种非常直观的工具,可以展示数据之间的关系和强度。今天,我将带你一步步学会如何用Python制作一个气泡热图。别担心,我会用最简单的方式解释每一个步骤,即使你没有编程基础也能轻松上手!

一、什么是气泡热图

气泡热图是一种结合了气泡图和热图特点的可视化图表。它通过气泡的大小和颜色来表示数据的强度,同时通过位置来展示数据的分类或分组。这种图表非常适合展示多个变量之间的关系,例如不同样本之间的某种属性强度。

二、我们需要什么样的数据

在制作气泡热图之前,我们需要准备以下类型的数据:

两个分类变量:这两个变量将决定气泡的位置。例如,X轴可以是一个分类变量(如不同的类别或分组),Y轴是另一个分类变量。

一个数值变量:这个变量决定了气泡的大小和颜色,通常表示某种强度或值的大小。

在我们的代码示例中,我们用的是随机生成的数据,但如果你有自己的数据,可以按照类似的结构准备。比如:

  • X轴:1到10的类别(可以是任何分组)。
  • Y轴:1到10的样本(也可以是其他分组)。
  • 每个气泡的大小和颜色由一个10×10的矩阵决定,矩阵中的每个值表示气泡的强度。

三、开始制作气泡热图

1. 安装必要的库

在开始之前,我们需要安装两个Python库:numpymatplotlib。这两个库分别用于处理数据和绘图。

如果你还没有安装,可以通过以下命令安装:

pip install numpy matplotlib

2. 准备代码

接下来,我们来看看代码的每一步。

(1)导入库

import numpy as np
import matplotlib.pyplot as plt
  • numpy用于处理数据,比如生成网格和随机数。
  • matplotlib.pyplot用于绘图。

(2)创建示例数据

K = np.arange(1, 11)  # X轴的分类变量
Samples = np.arange(1, 11)  # Y轴的分类变量
X, Y = np.meshgrid(K - 0.5, Samples - 0.5)  # 气泡中心位于格子中心
Z = np.random.rand(10, 10)  # 随机生成的强度数据
  • KSamples分别是X轴和Y轴的分类变量。
  • X, Y是通过meshgrid生成的网格,用于确定气泡的中心位置。
  • Z是一个10×10的矩阵,表示每个气泡的强度(随机生成的)。

(3)设置气泡大小

max_bubble_diameter = 0.8  # 最大气泡直径
bubble_sizes = Z * max_bubble_diameter**2 * 800  # 调整大小比例因子

气泡的大小与Z成正比,但最大直径被限制为0.8,以避免气泡之间重叠。

(4)绘制气泡图

plt.figure(figsize=(10, 8))  # 设置图形大小
scatter = plt.scatter(X, Y, s=bubble_sizes, c=Z, cmap='viridis', alpha=0.7, edgecolors="black", linewidth=1)
  • 使用scatter绘制气泡图。
  • s参数设置气泡大小。
  • c参数设置气泡颜色,颜色由Z决定。
  • cmap='viridis'设置了颜色映射,你可以换成其他颜色映射(如'plasma''coolwarm')。
  • alpha是透明度,edgecolorslinewidth设置了气泡的边框颜色和宽度。

(5)添加颜色条

cbar = plt.colorbar(scatter)
cbar.set_label('Bubble Intensity', fontsize=12)

颜色条可以帮助我们理解气泡颜色的含义。

(6)设置标题和标签

plt.title("Bubble Heatmap Plot", fontsize=18, fontweight='bold')
plt.xlabel("K (w)", fontsize=14)
plt.ylabel("Samples", fontsize=14)

标题和坐标轴标签让图表更清晰。

(7)设置坐标轴刻度和范围

plt.xticks(K, fontsize=12)
plt.yticks(Samples, fontsize=12)
plt.xlim(0, 10)
plt.ylim(0, 10)

确保气泡对齐在格子内,避免被切割。

(8)添加网格

plt.grid(True, which='both', axis='both', linestyle='-', linewidth=1, color='black')

网格可以帮助我们更好地理解气泡的位置。

(9)调整布局并显示图形

plt.tight_layout(pad=0.1)  # 调整布局
plt.show()  # 显示图形

四、运行代码,查看结果

将上述代码复制到你的Python环境中,运行后你将看到一个漂亮的气泡热图!你可以尝试修改数据或颜色映射,看看会发生什么变化。

完整代码如下:

import numpy as np
import matplotlib.pyplot as plt
# 创建示例数据
K = np.arange(1, 11)
Samples = np.arange(1, 11)
X, Y = np.meshgrid(K - 0.5, Samples - 0.5)  # 气泡中心位于格子中心
Z = np.random.rand(10, 10)
# 设置气泡大小,大小与数据Z成正比,但限制最大直径为0.8
max_bubble_diameter = 0.8  # 最大气泡直径
bubble_sizes = Z * max_bubble_diameter**2 * 800  # 调整大小比例因子以适应最大直径限制
# 创建气泡图
plt.figure(figsize=(10, 8))
# 绘制气泡图,使用 'viridis' 色系
scatter = plt.scatter(X, Y, s=bubble_sizes, c=Z, cmap='viridis', alpha=0.7, edgecolors="black", linewidth=1)
# 添加颜色条
cbar = plt.colorbar(scatter)
cbar.set_label('Bubble Intensity', fontsize=12)
# 设置标题和标签
plt.title("Bubble Heatmap Plot", fontsize=18, fontweight='bold')
plt.xlabel("K (w)", fontsize=14)
plt.ylabel("Samples", fontsize=14)
# 设置坐标轴刻度,确保气泡对齐在格子内
plt.xticks(K, fontsize=12)
plt.yticks(Samples, fontsize=12)
# 添加网格,清晰展示格子边框
plt.grid(True, which='both', axis='both', linestyle='-', linewidth=1, color='black')
# 设置坐标轴范围,使气泡显示在格子内,避免气泡被切割
plt.xlim(0, 10)
plt.ylim(0, 10)
# 调整布局,确保图形无多余空白并完整显示
plt.tight_layout(pad=0.1)  # 适当减小边缘空白
# 显示图形
plt.show()

五、总结

通过今天的教程,我们学会了如何用Python制作气泡热图。只要准备好合适的分类变量和数值变量,就可以轻松生成这种直观的图表。希望你能用这个技能来展示你的数据!

到此这篇关于使用Python制作气泡热图的示例代码的文章就介绍到这了,更多相关Python气泡热图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python基于Floyd算法求解最短路径距离问题实例详解

    Python基于Floyd算法求解最短路径距离问题实例详解

    这篇文章主要介绍了Python基于Floyd算法求解最短路径距离问题,结合完整实例形式详细分析了Python使用Floyd算法求解最短路径距离问题的相关操作技巧与注意事项,需要的朋友可以参考下
    2018-05-05
  • 完美解决python中ndarray 默认用科学计数法显示的问题

    完美解决python中ndarray 默认用科学计数法显示的问题

    今天小编就为大家分享一篇完美解决python中ndarray 默认用科学计数法显示的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python pandas索引的设置和修改方法

    Python pandas索引的设置和修改方法

    索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容,下面这篇文章主要给大家介绍了关于Python pandas索引的设置和修改的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Pandas对数值进行分箱操作的4种方法总结

    Pandas对数值进行分箱操作的4种方法总结

    分箱是一种常见的数据预处理技术有时也被称为分桶或离散化,他可用于将连续数据的间隔分组到“箱”或“桶”中。本文将使用python Pandas库对数值进行分箱的4种方法,感兴趣的可以了解一下
    2022-05-05
  • Python入门教程之if语句的用法

    Python入门教程之if语句的用法

    这篇文章主要介绍了Python入门教程之if语句的用法,是Python入门的基础知识,需要的朋友可以参考下
    2015-05-05
  • python requests.post请求404问题及解决方法

    python requests.post请求404问题及解决方法

    这篇文章主要介绍了python requests.post请求404问题,这里需要根据自己实际情况来分析当前接口接收数据时使用的是什么格式,但目前一般的网站都开始采用application/jsond的数据格式,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Python将字符串转换为datetime对象的五种方法

    Python将字符串转换为datetime对象的五种方法

    在Python编程中,我们经常会遇到需要将字符串形式的日期和时间转换为datetime对象的情况,例如,从文件、数据库或网络接口中获取的数据通常是以字符串形式存在的,使用datetime对象会更加方便,所以本文给大家总结Python将字符串转换为datetime对象的五种方法
    2025-07-07
  • Python实现APP自动化发微信群消息的示例代码

    Python实现APP自动化发微信群消息的示例代码

    本文主要介绍了Python实现APP自动化发微信群消息的示例代,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下码
    2022-01-01
  • 基于Python实现本地音乐播放器的制作

    基于Python实现本地音乐播放器的制作

    这篇文章主要介绍了如何利用Python实现本地音乐播放器的制作,并且可以选择需要播放的音乐的路径,选择播放方式,感兴趣的小伙伴可以了解一下
    2022-06-06
  • pycharm创建scrapy项目教程及遇到的坑解析

    pycharm创建scrapy项目教程及遇到的坑解析

    这篇文章主要介绍了pycharm创建scrapy项目教程及遇到的坑解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08

最新评论