You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib Spyder3.2.6大量信息绘图及间距调整问题

嘿,刚接触Spyder和数据分析就上手32k条数据,已经超棒啦!绘图拥挤确实是大数据量可视化时的常见困扰,我给你几个实用的解决办法,你可以挨个试试看:

解决Matplotlib绘图拥挤的实用方案

1. 放大图表尺寸

默认的Matplotlib画布太小,直接调整尺寸能立刻缓解拥挤感:

import matplotlib.pyplot as plt

# 设置画布宽12英寸、高8英寸(可根据需求调整)
plt.figure(figsize=(12, 8))
plt.scatter(df['age'], df['hours per week'])
plt.xlabel('Age')
plt.ylabel('Hours per Week')
plt.title('Age vs. Weekly Working Hours')
plt.show()

2. 给数据点加透明度

当大量数据点重叠时,降低透明度能清晰看到数据的分布密度,不会变成一团黑:

plt.figure(figsize=(12, 8))
# alpha值范围0-1,越小越透明,0.2是比较常用的数值
plt.scatter(df['age'], df['hours per week'], alpha=0.2)
plt.xlabel('Age')
plt.ylabel('Hours per Week')
plt.show()

3. 换用更适合大数据的图表类型

散点图不是唯一选择,试试这些更适配大样本的可视化方式:

二维直方图(Hexbin)

用六边形格子统计数据点密度,直观展示分布集中区域:

plt.figure(figsize=(12, 8))
# gridsize控制格子数量,数值越小格子越大
plt.hexbin(df['age'], df['hours per week'], gridsize=30, cmap='Blues')
plt.colorbar(label='Number of Data Points')
plt.xlabel('Age')
plt.ylabel('Hours per Week')
plt.show()

核密度估计图(KDE)

用平滑的密度曲线展示变量间的分布关系,需要用到seaborn库(Spyder里直接pip install seaborn就能装):

import seaborn as sns

plt.figure(figsize=(12, 8))
sns.kdeplot(data=df, x='age', y='hours per week', fill=True, cmap='viridis')
plt.xlabel('Age')
plt.ylabel('Hours per Week')
plt.show()

4. 对数据进行分箱处理

把连续的年龄、工作时长分成区间,统计每个区间的样本数量,用热力图展示更清晰:

# 对年龄按每5岁分箱,工作时长按每5小时分箱
df['age_bin'] = pd.cut(df['age'], bins=range(0, 100, 5))
df['hours_bin'] = pd.cut(df['hours per week'], bins=range(0, 100, 5))

# 统计每个分箱组合的样本数
count_df = df.groupby(['age_bin', 'hours_bin']).size().unstack()

plt.figure(figsize=(12, 8))
sns.heatmap(count_df, cmap='YlGnBu', annot=False, fmt='d')
plt.xlabel('Hours per Week Bins')
plt.ylabel('Age Bins')
plt.show()

你可以根据自己的需求选合适的方法——想看具体数据点就用带透明度的散点图,想看整体分布规律就用密度图或分箱热力图,试试哪个最顺手~

内容的提问来源于stack exchange,提问作者gonzalky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:39:52