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
相关产品推荐
相关产品推荐

