在数据分析和可视化中,气泡热图是一种非常直观的工具,可以展示数据之间的关系和强度。今天,我将带你一步步学会如何用python制作一个气泡热图。别担心,我会用最简单的方式解释每一个步骤,即使你没有编程基础也能轻松上手!
一、什么是气泡热图
气泡热图是一种结合了气泡图和热图特点的可视化图表。它通过气泡的大小和颜色来表示数据的强度,同时通过位置来展示数据的分类或分组。这种图表非常适合展示多个变量之间的关系,例如不同样本之间的某种属性强度。
二、我们需要什么样的数据
在制作气泡热图之前,我们需要准备以下类型的数据:
两个分类变量:这两个变量将决定气泡的位置。例如,x轴可以是一个分类变量(如不同的类别或分组),y轴是另一个分类变量。
一个数值变量:这个变量决定了气泡的大小和颜色,通常表示某种强度或值的大小。
在我们的代码示例中,我们用的是随机生成的数据,但如果你有自己的数据,可以按照类似的结构准备。比如:
- x轴:1到10的类别(可以是任何分组)。
- y轴:1到10的样本(也可以是其他分组)。
- 每个气泡的大小和颜色由一个10×10的矩阵决定,矩阵中的每个值表示气泡的强度。
三、开始制作气泡热图
1. 安装必要的库
在开始之前,我们需要安装两个python库:numpy
和matplotlib
。这两个库分别用于处理数据和绘图。
如果你还没有安装,可以通过以下命令安装:
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) # 随机生成的强度数据
k
和samples
分别是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
是透明度,edgecolors
和linewidth
设置了气泡的边框颜色和宽度。
(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气泡热图内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论