数据分析小课-matplotlib-散点图,气泡图,热力图,组合图

本文介绍了如何使用Python的matplotlib库进行数据可视化,包括散点图的绘制,通过调整s参数实现气泡图,利用seaborn库创建热力图,以及如何构造复杂的组合图。scatter函数提供了控制点的大小、颜色和形状等选项,heatmap则用于展示离散变量的交叉分布。subplot2grid方法则用于在图表中灵活布局多个子图。

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

散点图
scatter(x, y, s=20, c=None, marker=‘o’, alpha=None, linewidths=None, edgecolors=None)
x:指定散点图的x轴数据
y:指定散点图的y轴数据
s:指定散点图点的大小,默认为20,通过传入其他数值型变量,可以实现气泡图的绘制
c:指定散点图点的颜色,默认为蓝色,也可以传递其他数值型变量,通过cmap参数的色阶表示数值大

marker:指定散点图点的形状,默认为空心圆
alpha:设置散点的透明度
linewidths:设置散点边界线的宽度
edgecolors:设置散点边界线的颜色

# 读入数据
iris = pd.read_csv(r'C:\Users\Administrator\Desktop\iris.csv')
# 绘制散点图
plt.scatter(x = iris.Petal_Width, # 指定散点图的x轴数据
 y = iris.Petal_Length, # 指定散点图的y轴数据
 color = 'steelblue' # 指定散点图中点的颜色
 )
# 添加x轴和y轴标签
plt.xlabel('花瓣宽度')
plt.ylabel('花瓣长度')
# 添加标题
plt.title('鸢尾花的花瓣宽度与长度关系'
### 如何处理聚类分析散点图数据点重合问题 在聚类分析过程中,当绘制散点图时可能会遇到数据点重合的问题。这不仅影响视觉效果还可能掩盖重要的模式和趋势。为了改善这种情况并提高表的可读性和解释力,可以采用多种方法和技术。 #### 使用透明度调整(Alpha Blending) 通过设置较低的alpha值来增加形元素之间的可见差异。这种方法允许观察者看到叠加在一起的数据点数量以及大致位置[^2]: ```python import matplotlib.pyplot as plt plt.scatter(x, y, alpha=0.3) ``` #### 应用抖动技术(Jittering) 对于离散型特征或分类变量,在其基础上加入少量随机噪声可以帮助区分原本完全相同的观测值。这样可以在保持原始分布特性的前提下减少覆盖现象的发生: ```python import numpy as np jittered_x = x + np.random.normal(0, 0.05, size=x.shape) plt.scatter(jittered_x, y) ``` #### 利用气泡大小表示频数(Bubble Size Representation) 如果某些区域存在大量重复样本,则可以通过改变对应标记尺寸的方式直观展示该处聚集程度。较大的圆圈意味着更多实例位于相近坐标上[^1]: ```python from collections import Counter counts = list(Counter(zip(x,y)).values()) sizes = [count * 10 for count in counts] plt.scatter(x, y, s=sizes) ``` #### 绘制二维直方/热力(Heatmap or Hexbin Plot) 这些类型的像能够有效地传达密集区间的相对强度信息而不必担心单个点的位置被遮挡。特别是`hexbin()`函数提供了六边形单元格划分方案,有助于更清晰地呈现局部结构特点[^3]: ```python plt.hexbin(x, y, gridsize=30, cmap='Blues') cb = plt.colorbar() cb.set_label('Counts in bin') ``` #### 实施降维算法后再绘(Dimensionality Reduction Before Visualization) 考虑到高维度空间内更容易发生碰撞冲突的情况,先利用PCA、t-SNE等手段降低至二维再作不失为一种有效策略。它既保留了全局几何关系又解决了投影平面上可能出现过多交叠的问题: ```python from sklearn.decomposition import PCA pca = PCA(n_components=2).fit_transform(data) plt.scatter(pca[:, 0], pca[:, 1]) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值