Skip to content

结业考核

这是本书过程化考核的最后一环,由两部分组成:综合项目结业测验。全部完成后,你应当能脱离任何 AI 工具独立用 Matplotlib 绘制并解读数据图形,并读懂、验证 AI 生成的代码——这正是本书的两个核心目标。

一、综合项目

从下面三个主题中任选一个,独立完成。也可以自拟同等难度的主题,但必须先按 12.6 的审查清单自评。

主题 A:天气数据可视化周报

  • 生成或读入 3 个城市 30 天的气温、降雨数据(自行生成,固定种子保证可复现)。
  • subplotsGridSpec 组织一页多图:气温走势(折线 + 区间填充)、降雨量(柱状)、分布(箱线图)。
  • 每张子图有标题、轴标签(带单位)、必要的图例;整页有总标题。
  • 中文字体配置正确,图内无方框;输出 PNG(dpi≥150)与 PDF 各一份。

主题 B:销售数据仪表盘

  • 生成 12 个月 4 个品类的销售额数据。
  • GridSpec 做「上大下小」布局:横跨整行的逐月趋势主图 + 品类占比(饼图)+ 品类对比(柱状)。
  • 主图标注年度峰值(用 annotate),fill_between 强调趋势。
  • 配色统一(建议用一个品牌色板),图例与标签齐全,tight_layout 收尾。

主题 C:数据分布对比分析

  • 生成或读入 4 组不同分布的样本(如正态、均匀、指数、对数正态,固定种子)。
  • 用箱线图与直方图两种视角对比四组分布,说明各组在均值、离散度、偏斜上的差异。
  • style.context 给其中一组图换主题,对比可读性。
  • 输出一页对比图 + 一段 150 字以内的解读文字。

统一验收标准(全部满足才算通过):

标准说明
可运行按 README 或注释说明可一键运行,无语法错误
中文正常中文字体配置正确,图内无方框
有标签每张图都有标题、轴标签(带单位)、必要的图例
图对信息图表类型与数据形态匹配,没有「用错图」
结构清晰用函数组织代码,没有大段重复
布局得当多图用子图/GridSpec 组织,无重叠
保存合理输出 PNG(dpi≥150)或 PDF,边距合适
信息诚实数值真实、坐标轴没有被误导性截断

二、结业测验

覆盖第 1~12 章知识点,共 15 题,答对 12 题(80%)以上视为通过。

  1. plt.savefig 是哪个对象的方法?(第 10 章)
    • A. Axes
    • B. Figure
    • C. Tick
    • D. pyplot
  2. fig, axes = plt.subplots(1, 2) 之后,type(axes) 是?(第 2 章)
    • A. Axes
    • B. Figure
    • C. numpy.ndarray
    • D. list
  3. 控制折线线宽的关键字是?(第 3 章)
    • A. width
    • B. linewidth
    • C. thickness
    • D. size
  4. 给散点图加颜色条,正确写法是?(第 4 章)
    • A. ax.colorbar()
    • B. fig.colorbar(sc, ax=ax)
    • C. plt.color(sc)
    • D. ax.legend()
  5. 画连续数据分布的直方图用?(第 5 章)
    • A. ax.bar
    • B. ax.hist
    • C. ax.pie
    • D. ax.plot
  6. 想对比多组数据的分布形状(含偏斜),首选?(第 6 章)
    • A. 折线图
    • B. 小提琴图
    • C. 饼图
    • D. 散点图
  7. Matplotlib 3.9 起,boxplot 里给各组命名的参数是?(第 6 章)
    • A. labels
    • B. tick_labels
    • C. names
    • D. legend
  8. 让图例自动选一个与数据重叠最少的位置,loc= 填?(第 7 章)
    • A. "best"
    • B. "auto"
    • C. "smart"
    • D. "none"
  9. 给图加带箭头的注释用?(第 8 章)
    • A. ax.text
    • B. ax.annotate
    • C. ax.comment
    • D. ax.arrow
  10. 多子图元素重叠时,常用修复方法?(第 9 章)
    • A. fig.tight_layout()
    • B. fig.auto_space()
    • C. plt.overlap(False)
    • D. ax.set_visible(True)
  11. 放大多少倍都清晰的格式是?(第 10 章)
    • A. PNG
    • B. JPG
    • C. SVG
    • D. BMP
  12. 只让某一段代码用某个主题,用?(第 11 章)
    • A. plt.style.use
    • B. with plt.style.context("ggplot"):
    • C. plt.theme_switch()
    • D. plt.style.push()
  13. 阅读 AI 生成的 Matplotlib 代码,正确的态度是?(第 12 章)
    • A. 直接使用并信任
    • B. 审查、验证、改进后再使用
    • C. 一律不用
    • D. 只看注释
  14. 并列柱状图让两组柱子并排的关键是?(第 5 章)
    • A. 修改柱宽
    • B. 给 x 位置加偏移
    • C. 加图例
    • D. 用 bottom
  15. 网页图表常用的 dpi 是?(第 10 章)
    • A. 72
    • B. 150
    • C. 600
    • D. 1000

三、结业评审

  • 综合项目:对照验收标准逐条自评;如果可能,请另一位同学或老师运行你的程序。
  • 结业测验:15 题答对 12 题以上。
  • 两项都通过,即完成本书全部学习目标。

结业后的下一步

本书覆盖的是 Matplotlib 核心。之后可以按兴趣深入:

  • 更高级的可视化库:seaborn(基于 Matplotlib 的统计绘图)、plotly(交互式图表)
  • 数据分析:pandas 内置的 df.plot(快速绘图)、pandas-profiling(自动报告)
  • 地理与仪表盘:geopandas(地图)、dash / streamlit(数据应用)
  • 配色与字体:matplotlib 官方 颜色示例样式示例

无论选哪个方向,记住本书的两条原则:用对图表讲清数据,读懂并验证别人(包括 AI)写的代码。