← 返回《Python 数据分析实战》
📑 查看全课大纲(第 68 / 101 节)
  1. 1.数据分析基本概念
  2. 2.学习数据分析的一般路线
  3. 3.数据分析的流程
  4. 4.数据类型
  5. 5.环境部署(1)
  6. 6.环境部署(2)
  7. 7.课程介绍
  8. 8.TXT文件操作
  9. 9.JSON文件操作
  10. 10.CSV文件操作
  11. 11.Excel文件操作
  12. 12.数据库及SQL常用语法
  13. 13.数据库基本操作
  14. 14.数据库多表连接
  15. 15.实战:欧洲职业足球数据库分析
  16. 16.爬虫简介
  17. 17.URL管理模块
  18. 18.网页下载模块
  19. 19.网页解析模块(1)
  20. 20.网页解析模块(2)
  21. 21.Scrapy简介
  22. 22.Scrapy使用步骤(1)
  23. 23.Scrapy使用步骤(2)
  24. 24.Scrapy使用步骤(3)
  25. 25.Scrapy使用步骤(4)
  26. 26.实战:获取国内城市空气质量指数数据
  27. 27.NumPy和SciPy介绍
  28. 28.多维数组
  29. 29.多维数组操作
  30. 30.NumPy的常用方法
  31. 31.向量化介绍
  32. 32.向量化及通用函数
  33. 33.实战:2016美国大选分析
  34. 34.数据结构-Series
  35. 35.数据结构-DataFrame
  36. 36.数据结构-Index
  37. 37.Series的索引操作
  38. 38.DataFrame的索引操作
  39. 39.索引操作总结
  40. 40.运算与对齐
  41. 41.函数应用操作(1) -- map
  42. 42.函数应用操作 (2) -- apply applymap
  43. 43.文件读写操作
  44. 44.排序操作
  45. 45.数据清洗--处理缺失数据
  46. 46.数据清洗--处理重复数据
  47. 47.数据清洗--替换数据
  48. 48.常用统计方法(1) -- describe quantile
  49. 49.常用统计方法(2) -- sum mean median count
  50. 50.常用统计方法(3) -- max min idxmax idxmin
  51. 51.常用统计方法(4) -- mad var std cumsum
  52. 52.实战:全球食品数据分析
  53. 53.层级索引
  54. 54.分组与聚合介绍
  55. 55.分组操作(1) -- GroupBy对象及常用聚合操作
  56. 56.分组操作(2) -- 自定义分组及聚合操作
  57. 57.透视表介绍
  58. 58.透视表操作
  59. 59.数据规整(1) -- 数据合并concat
  60. 60.数据规整(2) -- 数据连接merge
  61. 61.数据重构(3) -- 数据重构stack unstack
  62. 62.实战:互联网电影资料库分析
  63. 63.探索性数据分析EDA介绍
  64. 64.EDA的目的
  65. 65.EDA常用工具
  66. 66.Matplotlib绘图基本介绍
  67. 67.Matplotlib画布
  68. 68.散点图和柱状图的绘制
  69. 69.直方图的绘制
  70. 70.矩阵绘图
  71. 71.子图的使用
  72. 72.Matplotlib颜色、标记、线型
  73. 73.Matplotlib坐标刻度、标签、图例、标题
  74. 74.Seaborn介绍
  75. 75.数据集分布可视化(1) -- 单变量分布、双变量分布
  76. 76.数据集分布可视化(2) -- 变量关系可视化
  77. 77.类别数据可视化 -- 类别散布图、类别内数据分布、类别内统计图
  78. 78.交互式数据可视化工具Bokeh介绍
  79. 79.Bokeh绘制散点图、柱状图、盒子图、弦图
  80. 80.Bokeh绘制常用图形元素
  81. 81.D绘图 -- mplot3d
  82. 82.D曲线可视化
  83. 83.D散点图可视化
  84. 84.D柱状图可视化
  85. 85.Pandas绘图
  86. 86.实战:Lending Club借贷数据探索性分析及可视化
  87. 87.机器学习介绍及应用场景
  88. 88.机器学习建模介绍 (1) -- 分类
  89. 89.机器学习建模介绍 (2) -- 回归
  90. 90.机器学习建模介绍 (3) -- 聚类
  91. 91.机器学习分类
  92. 92.机器学习工具scikit-learn
  93. 93.使用scikit-learn的流程
  94. 94.数据集准备及划分
  95. 95.模型选择
  96. 96.数据预处理及特征工程
  97. 97.过拟合与欠拟合
  98. 98.模型调参介绍
  99. 99.模型调参方法
  100. 100.模型测试及评价
  101. 101.实战:通过移动设备行为数据预测性别和年龄

散点图和柱状图的绘制

约 11 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

核心统计图表绘制(1):散点图 scatter 与柱状图 bar 的业务实战与视觉编码

小象实战讲义 · Python数据分析实战

在探索性数据分析中,散点图(Scatter Plot)柱状图(Bar Chart) 是使用频率最高、信息传递最直观的两大经典图表。散点图擅长揭示两个连续变量之间的相关性、聚类聚集与离群点;而柱状图(条形图)则专精于离散类别之间的数值对比与排名。本节我们将深入学习使用 Matplotlib 绘制高质量散点图(结合颜色与大小进行多维映射)以及垂直/水平柱状图与分组对比条形图。

💡 核心导读

  • 散点图 plt.scatter(x, y) 核心视觉通道编码
    • 位置通道(x, y 轴坐标);
    • 尺寸通道(s=size_arr 点大小映射权重);
    • 颜色通道(c=color_arr, cmap='viridis' 映射第三维度连续指标);
    • 透明度通道(alpha=0.6 解决严重数据重叠遮挡)。
  • 柱状图 plt.bar() / plt.barh() 实战
    • 垂直柱状图对比类别数值;
    • 水平条形图展示长文本分类与排行榜;
    • 堆叠柱状图与并列分组柱状图。

1. 散点图的多维视觉通道映射与重叠优化

散点图可以通过点的位置、颜色和尺寸同时展示 4 个维度的信息:

┌─────────────────────────────────────────────────────────────┐
│                 四维散点图视觉编码拓扑                      │
├─────────────────────────────────────────────────────────────┤
│ 1. X 轴: 广告投入金额 (连续数值)                            │
│ 2. Y 轴: 订单成交金额 (连续数值)                            │
│ 3. 点大小 (s): 客户触达覆盖人数 (物理体量)                  │
│ 4. 点颜色 (c): 最终转化率 ROI (颜色热力映射)                │
└─────────────────────────────────────────────────────────────┘
import matplotlib.pyplot as plt
import numpy as np

# 解决中文显示
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False

# 1. 模拟生成 100 场营销活动的四维数据
np.random.seed(42)
ad_spend = np.random.uniform(5000, 50000, 100)
revenue = ad_spend * np.random.uniform(1.5, 3.5, 100) + np.random.normal(0, 5000, 100)
reach_people = np.random.uniform(10000, 200000, 100)
roi = revenue / ad_spend

# 2. 绘制多维气泡散点图
fig, ax = plt.subplots(figsize=(8, 5))
scatter = ax.scatter(
    ad_spend / 1000, revenue / 1000,
    s=reach_people / 800,        # 尺寸映射
    c=roi, cmap="plasma",        # 颜色映射
    alpha=0.7, edgecolors="gray"
)

ax.set_title("营销活动投入产出多维散点图 (点大小=覆盖人数, 颜色=ROI)", fontsize=12)
ax.set_xlabel("广告投入 (千元)")
ax.set_ylabel("成交营收 (千元)")
ax.grid(True, linestyle="--", alpha=0.4)

# 添加颜色条
cbar = fig.colorbar(scatter, ax=ax)
cbar.set_label("投入产出比 ROI")

plt.savefig("scatter_multidim_demo.png", bbox_inches="tight")
plt.close(fig)
print("✅ 散点图绘制完成!")

2. 垂直与水平柱状图排行展示

对于类别名称较长的场景,使用 barh() 水平条形图从上到下排列是最清晰的呈现方案。

# 绘制城市营收排行榜水平条形图
cities = ["北京", "上海", "深圳", "广州", "杭州", "成都", "武汉"]
sales_m = [450, 480, 360, 310, 290, 240, 210]

fig, ax = plt.subplots(figsize=(7, 4.5))
y_pos = np.arange(len(cities))

bars = ax.barh(y_pos, sales_m, color="#2ca02c", alpha=0.85)
ax.set_yticks(y_pos)
ax.set_yticklabels(cities)
ax.invert_yaxis() # 头部城市排在最上方
ax.set_xlabel("年度销售总额 (百万元)")
ax.set_title("重点城市年度销售业绩排行榜", fontsize=13)

# 在柱子末端添加数值标签
for bar in bars:
    w = bar.get_width()
    ax.text(w + 5, bar.get_y() + bar.get_height() / 2, f"{int(w)}M", va="center", fontsize=9)

ax.set_xlim(0, 550)
ax.grid(True, axis="x", linestyle=":", alpha=0.5)

plt.savefig("barh_ranking_demo.png", bbox_inches="tight")
plt.close(fig)

import os
for f in ["scatter_multidim_demo.png", "barh_ranking_demo.png"]:
    if os.path.exists(f): os.remove(f)
print("✅ 水平条形图排行榜绘制完成!")

📝 动手练一练

  1. 概念思考题:在样本量极大(如 10 万个样本)的散点图中,所有点几乎糊成一片黑斑(数据过度绘制 Overplotting),有哪些常用的视觉优化解决方案?

    👉 点击查看参考答案

    参考答案: ① 调小点尺寸并增加透明度:如 s=5, alpha=0.1; ② 降采样(Downsampling):随机抽取 5000 个代表性样本进行展示; ③ 二维直方图或六边形箱图(Hexbin Plot):使用 plt.hexbin(x, y) 用颜色密度表示密集程度。

  2. 编程练习:给定品类销售字典 sales = {'A': 100, 'B': 150, 'C': 80},请使用 plt.bar() 绘制垂直柱状图。

    👉 点击查看参考答案

    参考答案

    import matplotlib.pyplot as plt
    sales = {'A': 100, 'B': 150, 'C': 80}
    plt.bar(sales.keys(), sales.values(), color='skyblue')
    plt.title("Category Sales")
    plt.close()

本章小结

  • 掌握了散点图在坐标、尺寸(s)、颜色(c)多维视觉通道的映射技巧;
  • 学会了使用水平条形图(barh)配合数值标签呈现优雅的商业排行榜;
  • 掌握了处理散点过度重叠(alphahexbin)的实用方案。

📋 行动清单

  • 在本地执行示例代码,观察控制台输出并记录关键指标。
  • 做好准备,进入下一小节学习《核心统计图表绘制(2):直方图 hist 与概率密度分布》!

—— 小象教研组

配套学习资源与课件
  • 本节课件:散点图和柱状图的绘制(PDF · 205KB)
    下载
  • 全套课件打包(第1-5章)(ZIP · 12.8MB)
    下载
  • 全套课件打包(第6-8章)(ZIP · 15MB)
    下载
  • 实战数据集:AppleStore 应用商城分析(ZIP · 329KB)
    下载
  • 实战数据集:女性服装电商分析(ZIP · 2.8MB)
    下载
  • Python 数据分析环境搭建指南(PDF · 2MB)
    下载
  • Scrapy 安装教程(PDF · 12.7MB)
    下载
  • 附加实战项目:AppleStore 应用商城数据分析(ZIP · 0.3MB · ipynb + CSV 数据)
    下载
  • 附加实战项目:银行电话营销数据分析(ZIP · 0.4MB · ipynb + CSV 数据)
    下载
  • 附加实战项目:女性服装电商评论数据分析(ZIP · 2.7MB · ipynb + CSV 数据)
    下载
  • 附加实战项目:美国化学学会杂志数据分析(ZIP · 34.2MB · ipynb + SQLite 数据库)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加课程顾问,免费获取网盘下载链接
微信二维码:扫码添加课程顾问微信扫码添加顾问