Python学习——matplotlib绘制散点分布六边形分箱图

本文介绍了如何使用Python中的matplotlib库绘制六边形分箱图,解决散点图中数据过于密集的问题,通过调整网格大小和颜色映射展示数据的集中趋势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

六边形分箱图

六边形分箱图(Hexagonal Binning)是一种由六边形为主要元素的统计图表。
在绘制散点图时,如果散点的数量过多时,数据点很可能会重叠在一起,以至于很难分辨出趋势,同时也不能很好的看出散点分布的群体化特征。而六边形分箱图就能利用图形颜色的深浅来直观的表示数据的集中趋势。

Python绘制六边形分箱图

import matplotlib.pyplot as plt
import numpy as np

# 生成标准正态分布的随机数据
n = 1000
x = np.random.standard_normal(n)
y = 12 * np.random.standard_normal(n)

# 绘制散点图
plt.figure(1)#图像编号
plt.figure(figsize=(7,6))#图像尺寸
plt.scatter(x,y,s=25,c="hotpink",alpha=0.6)
plt.savefig('1.png',dpi=600)#绘制六边形分箱图
plt.figure(2)
plt.figure(figsize=(7,6))
plt.hexbin(x,y,gridsize=25,cmap='afmhot_r')
plt.savefig('2.png',dpi=600)
plt.figure(3)
plt.figure(figsize=(7,6))
plt.hexbin(x,y,gridsize=15,cmap='Greys')
plt.savefig('3.png',dpi=600)


plot.scatter()函数

1、 x, y → 散点的坐标
2、 s → 散点的面积
3、 c → 散点的颜色(默认值为蓝色,‘b’,其余颜色同plt.plot( ))
4、 alpha → 散点透明度([0, 1]之间的数,0表示完全透明,1则表示完全不透明)
5、 linewidths →散点的边缘线宽
6、 edgecolors → 散点的边缘颜色
7、 marker → 散点样式(默认值为实心圆,‘o’,其余样式同plt.plot( ))

plot.hexbin()函数

1、 gridsize:设置六边形格子的大小,用于调整数据点分布的精度。
2、 cmap:设置颜色映射,用于将数据点的数量映射为不同的颜色。
3、 bins:设置将数据点映射到的颜色层数。
4、 linewidths:设置格子边框的粗细。

以下是第一张散点图,可以看到在很多的数据点是,数据的集中趋势是很难表示出来的

接着我们再看六边形分箱图
颜色更深的地方表示更密集的数据点
在这里插入图片描述

我们可以修改plot.hexbin()函数去修改图形的颜色和六边形的大小来得到自己需要的图形

### 如何使用Python绘制双变量分布 #### 使用Matplotlib绘制简单 为了可视化两个连续变量间的关系,可以采用的形式。这种表有助于观察两组数据间的潜在模式或关联。 ```python import matplotlib.pyplot as plt import numpy as np # 创建一些随机样本数据 x = np.random.rand(50) y = np.random.rand(50) plt.figure(figsize=(8, 6)) plt.scatter(x, y, color='blue', marker='o') plt.title('Scatter Plot of Two Variables') plt.xlabel('Variable X') plt.ylabel('Variable Y') plt.grid(True) plt.show() ``` 此段代码展示了如何利用`matplotlib`库中的`scatter()`方法来创建一个基本的二维[^1]。 #### 利用Seaborn进行更复杂的双变量分析 对于更加复杂的数据集以及希望获得更为美观且信息量更大的像时,则推荐使用基于Matplotlib之上的高级接口——Seaborn。特别是其中的`pairplot()`函数非常适合探索多维数据集中各特征之间可能存在的联系。 ```python import seaborn as sns import pandas as pd # 构建示例DataFrame对象 df = pd.DataFrame({ 'A': np.random.randn(100), 'B': np.random.randn(100)*2, }) sns.pairplot(df) plt.show() ``` 上述脚本说明了怎样借助于Seaborn快速生成一对多类型的比较视,在这里不仅限于单纯的形式,还包括沿对角线位置处的一元分布表示(如直方),从而提供了一个全面了解各个属性相互作用的机会[^3]。 另外,如果仅需专注于特定的两个字段并期望得到带有回归拟合曲线的结果,那么可以直接调用`sns.jointplot()`: ```python sns.jointplot(data=df, x="A", y="B", kind="reg") plt.show() ``` 这段程序片段能够帮助更好地理解目标变量与其他解释因子之间的定量关系,并且支持多种绘样式的选择,比如加回归线(`kind="reg"`), 六边形箱型 (`kind="hex"`) 或者核密度估计 (`kind="kde"`) 等不同选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值