欢迎光临
我们一直在努力

《超简单:用 Python 让 Excel 飞起来》读书笔记:第8章 扩展 制作组合图表展示多维信息

avatar

🔥
个人主页:
杨利杰YJlio

❄️
个人专栏:
《Sysinternals实战教程》
《Windows PowerShell 实战》
《WINDOWS教程》
《IOS教程》

《微信助手》
《锤子助手》
《Python》
《Kali Linux》

《那些年未解决的Windows疑难杂症》
🌟
让复杂的事情更简单,让重复的工作自动化

请添加图片描述

在这里插入图片描述


《超简单:用 Python 让 Excel 飞起来》读书笔记:第8章 扩展 制作组合图表展示多维信息

  • 1. 第8章扩展:制作组合图表展示多维信息
  • 2. 组合图解决的核心痛点:只看单一图表不够
  • 3. 同坐标轴组合图:适合量级接近的数据
    • 3.1 最小可用代码
  • 4. 双 y 轴组合图:不同量级时必须用 twinx
    • 4.1 双 y 轴组合图完整代码
  • 5. 组合图可读性优化:标签、范围、图例必须处理好
    • 5.1 给柱形图添加数据标签
    • 5.2 合并左右轴图例
    • 5.3 百分比轴建议锁定 0 到 100
  • 6. 企业可交付版:从 Excel 读取数据,一键生成组合图 PNG
    • 6.1 Excel 表结构建议
    • 6.2 完整脚本:读取 Excel 并输出组合图
  • 7. 效果验证:不要只看“代码有没有报错”
  • 8. 常见问题与踩坑记录
    • 8.1 折线贴在底部,看不清
    • 8.2 图例只显示一个指标
    • 8.3 中文标题乱码
    • 8.4 百分比趋势被夸大
    • 8.5 图表太复杂,读者看不懂
  • 9. 我的总结提升

1号标题图

1. 第8章扩展:制作组合图表展示多维信息

V4修正版进度标记:本篇为 07月11日 第1篇,承接前文图表章节继续更新。

  本文是我阅读《超简单:用 Python 让 Excel 飞起来》时整理的读书笔记。本篇重点不是简单记录 Matplotlib 的某个函数,而是把“组合图表”放到真实办公自动化场景里理解:什么时候用柱形图,什么时候用折线图,什么时候必须用双 y 轴,以及如何把它封装成可以重复使用的脚本。

  在实际工作里,很多报表不是只看一个指标。例如 IT 工单分析里,领导通常不会只关心“工单数量”,还会继续问:解决率有没有下降?平均耗时有没有变长?服务质量有没有跟上?这时单独一张柱形图或者单独一张折线图都不够。

  组合图表的价值,就是用一张图同时表达“数量 + 趋势 + 质量”。柱形图适合展示规模,折线图适合展示趋势,双 y 轴适合处理量级不同的数据。

  这张图展示了 Python 与 Excel 自动化结合后,通过柱形图与折线图同时展示多维业务指标的整体效果。

请添加图片描述

  从这张图中我们可以看出,组合图不是为了“让图更复杂”,而是为了让一张图承载更多业务判断:柱形图负责看数量,折线图负责看趋势,最终服务于汇报和决策。

  本文会围绕以下几个问题展开:

  • 组合图解决什么问题
  • 什么时候用同坐标轴
  • 什么时候必须用双 y 轴
  • 如何优化组合图的可读性
  • 如何从 Excel 读取数据并自动生成 PNG 图表

#mermaid-svg-QbNgkJnWF4NtS89K{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-QbNgkJnWF4NtS89K .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-QbNgkJnWF4NtS89K .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-QbNgkJnWF4NtS89K .error-icon{fill:#552222;}#mermaid-svg-QbNgkJnWF4NtS89K .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-QbNgkJnWF4NtS89K .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-QbNgkJnWF4NtS89K .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-QbNgkJnWF4NtS89K .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-QbNgkJnWF4NtS89K .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-QbNgkJnWF4NtS89K .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-QbNgkJnWF4NtS89K .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-QbNgkJnWF4NtS89K .marker{fill:#333333;stroke:#333333;}#mermaid-svg-QbNgkJnWF4NtS89K .marker.cross{stroke:#333333;}#mermaid-svg-QbNgkJnWF4NtS89K svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-QbNgkJnWF4NtS89K p{margin:0;}#mermaid-svg-QbNgkJnWF4NtS89K .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-QbNgkJnWF4NtS89K .cluster-label text{fill:#333;}#mermaid-svg-QbNgkJnWF4NtS89K .cluster-label span{color:#333;}#mermaid-svg-QbNgkJnWF4NtS89K .cluster-label span p{background-color:transparent;}#mermaid-svg-QbNgkJnWF4NtS89K .label text,#mermaid-svg-QbNgkJnWF4NtS89K span{fill:#333;color:#333;}#mermaid-svg-QbNgkJnWF4NtS89K .node rect,#mermaid-svg-QbNgkJnWF4NtS89K .node circle,#mermaid-svg-QbNgkJnWF4NtS89K .node ellipse,#mermaid-svg-QbNgkJnWF4NtS89K .node polygon,#mermaid-svg-QbNgkJnWF4NtS89K .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-QbNgkJnWF4NtS89K .rough-node .label text,#mermaid-svg-QbNgkJnWF4NtS89K .node .label text,#mermaid-svg-QbNgkJnWF4NtS89K .image-shape .label,#mermaid-svg-QbNgkJnWF4NtS89K .icon-shape .label{text-anchor:middle;}#mermaid-svg-QbNgkJnWF4NtS89K .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-QbNgkJnWF4NtS89K .rough-node .label,#mermaid-svg-QbNgkJnWF4NtS89K .node .label,#mermaid-svg-QbNgkJnWF4NtS89K .image-shape .label,#mermaid-svg-QbNgkJnWF4NtS89K .icon-shape .label{text-align:center;}#mermaid-svg-QbNgkJnWF4NtS89K .node.clickable{cursor:pointer;}#mermaid-svg-QbNgkJnWF4NtS89K .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-QbNgkJnWF4NtS89K .arrowheadPath{fill:#333333;}#mermaid-svg-QbNgkJnWF4NtS89K .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-QbNgkJnWF4NtS89K .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-QbNgkJnWF4NtS89K .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QbNgkJnWF4NtS89K .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-QbNgkJnWF4NtS89K .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QbNgkJnWF4NtS89K .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-QbNgkJnWF4NtS89K .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-QbNgkJnWF4NtS89K .cluster text{fill:#333;}#mermaid-svg-QbNgkJnWF4NtS89K .cluster span{color:#333;}#mermaid-svg-QbNgkJnWF4NtS89K div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-QbNgkJnWF4NtS89K .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-QbNgkJnWF4NtS89K rect.text{fill:none;stroke-width:0;}#mermaid-svg-QbNgkJnWF4NtS89K .icon-shape,#mermaid-svg-QbNgkJnWF4NtS89K .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QbNgkJnWF4NtS89K .icon-shape p,#mermaid-svg-QbNgkJnWF4NtS89K .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-QbNgkJnWF4NtS89K .icon-shape .label rect,#mermaid-svg-QbNgkJnWF4NtS89K .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QbNgkJnWF4NtS89K .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-QbNgkJnWF4NtS89K .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-QbNgkJnWF4NtS89K :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

接近

差异大

Excel 原始数据

Python 读取数据

判断指标量级

量级是否接近

同坐标轴组合图

双 y 轴组合图

添加标题/图例/标签

保存 PNG 或写回 Excel


2号标题图

2. 组合图解决的核心痛点:只看单一图表不够

  普通柱形图适合回答“数量有多少”,普通折线图适合回答“趋势怎么变”。但很多工作场景的关键问题不是单一指标,而是多个指标之间的关系。

  例如下面这类问题,单一图表就不够用了:

  • 工单量上涨了,解决率有没有同步提升
  • 销售额增加了,订单量是否也增加
  • 访问量变高了,转化率有没有变差
  • 设备故障率下降了,维修成本是否也下降

  组合图的本质,是把不同类型的数据放到同一个时间轴或分类轴下,让读者同时观察“规模”和“变化”。

  但这里必须先划清一个边界:组合图不是万能图表。它适合指标之间存在业务关联的情况,不适合把毫无关系的指标硬塞到一张图里。

  如果两个指标没有共同分析目标,只是为了让图表看起来丰富而放在一起,那就是低质量图表。

  我自己判断是否适合做组合图,一般看三个条件:

  • 两个指标是否围绕同一个业务对象;
  • 两个指标是否共享同一个 x 轴;
  • 放在一起后,能不能帮助读者更快得出结论。

  • 3号标题图

    3. 同坐标轴组合图:适合量级接近的数据

      如果两组数据的量级比较接近,可以先使用同一个 y 轴。比如“工单数量”和“平均耗时”在某些场景下都能放到同一张图里观察,尤其是只是为了展示趋势关系,而不是做严格数值比较时。

      同坐标轴组合图的优点是简单、直观、代码少。但它的前提也很明确:两个指标不能相差太大,否则其中一个指标会被压扁。

      这张图展示了同坐标轴组合图的典型效果:柱形图展示工单数量,折线图展示平均耗时,两者在一个坐标轴中同时观察。

    请添加图片描述

      从这张图中我们可以看出,同坐标轴适合做快速趋势对比。它的重点不是精确展示两个指标的绝对值,而是让读者一眼看到两条信息是否同向变化。

    3.1 最小可用代码

    import matplotlib.pyplot as plt
    import numpy as np

    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False

    months = ["1月", "2月", "3月", "4月", "5月", "6月"]

    # 柱形图数据:工单数量
    tickets = [120, 98, 135, 110, 150, 160]

    # 折线图数据:平均耗时
    avg_time = [2.8, 3.1, 2.6, 2.9, 2.4, 2.2]

    x = np.arange(len(months))

    plt.figure(figsize=(9, 6))

    # 绘制柱形图
    plt.bar(x, tickets, width=0.6, label="工单数量", alpha=0.75)

    # 绘制折线图
    plt.plot(x, avg_time, marker="o", linewidth=2, label="平均耗时(小时)")

    plt.xticks(x, months)
    plt.title("组合图:工单数量 + 平均耗时(同坐标轴)")
    plt.xlabel("月份")
    plt.ylabel("数量 / 小时")
    plt.grid(axis="y", linestyle="–", alpha=0.4)
    plt.legend()
    plt.tight_layout()
    plt.show()

      这段代码里最关键的是两点:第一,用 `plt.bar()` 画柱形图;第二,用 `plt.plot()` 在同一个画布上叠加折线图。

      需要注意:如果柱形数据是 100、200、300,而折线数据是 0.8、0.9、0.95,那么折线会几乎贴在底部,看起来像没有变化。这种场景就不适合使用同坐标轴。


    4号标题图

    4. 双 y 轴组合图:不同量级时必须用 twinx

      当两个指标量级差异很大时,就应该使用双 y 轴。典型场景是“数量 + 百分比”,例如工单数量与解决率、销售额与利润率、访问量与转化率。

      Matplotlib 中实现双 y 轴的核心函数是 `twinx()`。它的作用是:让两组数据共用同一个 x 轴,但拥有独立的左侧 y 轴和右侧 y 轴。

      这张图展示了双 y 轴组合图的典型结构:左轴看工单量,右轴看解决率,柱形图和折线图互不压缩。

    请添加图片描述

      这一步的核心要点是:当指标单位不同、量级不同、但又需要放在同一张图里解释时,双 y 轴是更稳妥的选择。

    4.1 双 y 轴组合图完整代码

    import matplotlib.pyplot as plt
    import numpy as np

    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False

    months = ["1月", "2月", "3月", "4月", "5月", "6月"]

    # 左轴数据:工单量
    tickets = [120, 98, 135, 110, 150, 160]

    # 右轴数据:解决率
    solve_rate = [92, 88, 95, 90, 96, 97]

    x = np.arange(len(months))

    fig, ax1 = plt.subplots(figsize=(9, 6))

    # 左轴:柱形图
    ax1.bar(x, tickets, width=0.6, alpha=0.75, label="工单数量")
    ax1.set_xlabel("月份")
    ax1.set_ylabel("工单数量(单)")
    ax1.set_xticks(x)
    ax1.set_xticklabels(months)
    ax1.grid(axis="y", linestyle="–", alpha=0.4)

    # 右轴:折线图
    ax2 = ax1.twinx()
    ax2.plot(x, solve_rate, marker="o", linewidth=2, linestyle="–", label="解决率(%)")
    ax2.set_ylabel("解决率(%)")
    ax2.set_ylim(0, 100)

    # 合并图例
    h1, l1 = ax1.get_legend_handles_labels()
    h2, l2 = ax2.get_legend_handles_labels()
    ax1.legend(h1 + h2, l1 + l2, loc="upper left")

    plt.title("组合图:工单数量(柱) + 解决率(折线,双 y 轴)")
    plt.tight_layout()
    plt.show()

      这段代码里,`ax1` 负责左侧 y 轴,`ax2 = ax1.twinx()` 负责创建右侧 y 轴。柱形图放在左轴,折线图放在右轴,两者共用月份这个 x 轴。

      如果右轴是百分比,我建议尽量使用 `ax2.set_ylim(0, 100)` 锁定范围。这样做可以避免折线图被自动缩放得过于夸张,导致读者误判趋势。


    5号标题图

    5. 组合图可读性优化:标签、范围、图例必须处理好

      组合图比单一图表更容易出问题,因为它同时承载两类信息。如果不做可读性优化,读者很容易看错:不知道柱子代表什么,不知道折线代表什么,也不知道左右 y 轴分别是什么单位。

      组合图最危险的地方,不是代码写错,而是图表看起来对,实际会误导读者。

      这张图展示了组合图可读性优化的几个关键点:数据标签、范围锁定、图例合并,以及用于汇报时的视觉重点。

    请添加图片描述

      从这张图中我们可以看出,一张适合汇报的组合图,不能只停留在“能画出来”。它还必须让读者快速读数、减少误判,并且能直接看出图中的核心指标。

    5.1 给柱形图添加数据标签

    for i, v in enumerate(tickets):
    ax1.text(i, v + 3, str(v), ha="center", va="bottom")

      数据标签的作用是减少读者心算成本。尤其是在周报、月报、领导汇报中,顶部数字比坐标轴读数更直接。

    5.2 合并左右轴图例

    h1, l1 = ax1.get_legend_handles_labels()
    h2, l2 = ax2.get_legend_handles_labels()
    ax1.legend(h1 + h2, l1 + l2, loc="upper left")

      双 y 轴组合图如果不合并图例,常见问题是只显示柱形图图例,不显示折线图图例。这样图虽然能生成,但读者无法判断折线到底代表什么。

    5.3 百分比轴建议锁定 0 到 100

    ax2.set_ylim(0, 100)

      百分比类指标天然有明确范围,通常不建议让 Matplotlib 自动缩放。如果解决率从 92% 到 97%,自动缩放可能会让波动看起来非常剧烈,实际只是小范围变化。


    6号标题图

    6. 企业可交付版:从 Excel 读取数据,一键生成组合图 PNG

      如果只是手写列表数据,意义不大。真正的办公自动化场景,一定是从 Excel 读取数据,然后自动生成图表,最后输出 PNG 或写回 Excel。

      这张图展示了从 Excel 数据到 Python 自动处理,再到生成组合图 PNG 的完整链路。

    请添加图片描述

      从这张图中我们可以看出,真正可复用的不是某一段绘图代码,而是一条自动化交付链路:读取 Excel、清洗数据、生成图表、保存文件。

    6.1 Excel 表结构建议

      假设 Excel 文件名为 `report.xlsx`,Sheet 名为 `数据`,至少包含以下三列:

    月份工单数量解决率
    1月 120 92
    2月 98 88
    3月 135 95
    4月 110 90
    5月 150 96
    6月 160 97

      建议列名尽量简洁,不要带多余空格。例如使用 `工单数量`,不要写成 ` 工单数量 ` 或 `工单 数量`。字段名越干净,脚本越稳定。

    6.2 完整脚本:读取 Excel 并输出组合图

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    from pathlib import Path

    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False

    def excel_to_combo_chart(
    xlsx_path: str,
    sheet: str,
    x_col: str,
    bar_col: str,
    line_col: str,
    out_png: str = "out/combo_chart.png",
    ):
    """
    从 Excel 读取数据,生成柱形图 + 折线图的组合图。
    适用于:数量 + 百分比、数量 + 趋势类指标。
    """

    # 1. 读取 Excel
    df = pd.read_excel(xlsx_path, sheet_name=sheet)

    # 2. 提取 x 轴与两个指标列
    x_labels = df[x_col].astype(str).tolist()
    bar = pd.to_numeric(df[bar_col], errors="coerce").fillna(0).tolist()
    line = pd.to_numeric(df[line_col], errors="coerce").fillna(0).tolist()

    x = np.arange(len(x_labels))

    # 3. 创建画布和左轴
    fig, ax1 = plt.subplots(figsize=(10, 6))

    # 4. 左轴:柱形图
    ax1.bar(x, bar, width=0.6, alpha=0.75, label=bar_col)
    ax1.set_xlabel(x_col)
    ax1.set_ylabel(f"{bar_col}(单)")
    ax1.set_xticks(x)
    ax1.set_xticklabels(x_labels)
    ax1.grid(axis="y", linestyle="–", alpha=0.4)

    # 添加柱形数据标签
    for i, v in enumerate(bar):
    ax1.text(i, v + 3, str(int(v)), ha="center", va="bottom")

    # 5. 右轴:折线图
    ax2 = ax1.twinx()
    ax2.plot(x, line, marker="o", linewidth=2, linestyle="–", label=f"{line_col}(%)")
    ax2.set_ylabel(f"{line_col}(%)")
    ax2.set_ylim(0, 100)

    # 6. 合并图例
    h1, l1 = ax1.get_legend_handles_labels()
    h2, l2 = ax2.get_legend_handles_labels()
    ax1.legend(h1 + h2, l1 + l2, loc="upper left")

    # 7. 设置标题和布局
    plt.title(f"组合图:{bar_col}(柱) + {line_col}(折线)")
    plt.tight_layout()

    # 8. 保存输出
    out_png = Path(out_png)
    out_png.parent.mkdir(parents=True, exist_ok=True)
    plt.savefig(out_png, dpi=200)
    plt.close()

    return str(out_png)

    if __name__ == "__main__":
    png = excel_to_combo_chart(
    xlsx_path="report.xlsx",
    sheet="数据",
    x_col="月份",
    bar_col="工单数量",
    line_col="解决率",
    out_png="out/组合图_工单数量_解决率.png",
    )

    print("✅ 已输出组合图:", png)

      这版脚本已经接近实际工作中可以复用的模板。以后只需要修改 `xlsx_path`、`sheet`、`x_col`、`bar_col`、`line_col` 这几个参数,就能快速适配不同报表。

      注意:如果 Excel 文件正在被打开,脚本可能读取失败或保存失败。正式运行前建议关闭目标 Excel 文件。


    7号标题图

    7. 效果验证:不要只看“代码有没有报错”

      办公自动化脚本最容易出现一个误区:运行没有报错,就认为成功了。实际上,图表类脚本一定要做结果验证。

      我建议至少验证 5 个点:

  • PNG 文件是否成功生成;
  • 图片标题是否符合业务含义;
  • 左 y 轴和右 y 轴单位是否清晰;
  • 柱形图和折线图是否都显示了图例;
  • 百分比指标是否被正确限制在 0 到 100 范围内。
  •   可以在脚本运行后检查输出路径:

    from pathlib import Path

    out_file = Path("out/组合图_工单数量_解决率.png")

    if out_file.exists():
    print("✅ 图片已生成:", out_file.resolve())
    else:
    print("❌ 图片未生成,请检查路径和脚本报错")

      验证的目的不是证明脚本跑过,而是证明输出结果真的可以交付。


    8号标题图

    8. 常见问题与踩坑记录

    8.1 折线贴在底部,看不清

      这种情况通常是因为两个指标量级差异太大。例如柱形图是几百,折线图是 0.8 或 0.9。解决方法是使用双 y 轴,而不是强行共用同一个 y 轴。

      推荐做法:数量类指标放左轴,百分比类指标放右轴。

    8.2 图例只显示一个指标

      双 y 轴下,`ax1` 和 `ax2` 各自维护自己的图例。如果只调用一个轴的 legend,就可能只显示柱形图或者只显示折线图。

      解决办法是使用 `get_legend_handles_labels()` 合并两个轴的图例。

    8.3 中文标题乱码

      如果标题、坐标轴出现方块或乱码,通常是字体问题。可以在脚本顶部加入:

    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False

      如果电脑没有 SimHei 字体,需要换成系统中实际存在的中文字体。

    8.4 百分比趋势被夸大

      如果解决率从 92% 到 97%,但 y 轴自动缩放到 90~98,折线会显得变化特别大。这种图在汇报中容易误导。

      百分比指标建议固定 0~100,除非你明确知道自己要放大局部差异。

    8.5 图表太复杂,读者看不懂

      组合图不是越多越好。一张图里建议控制在两类核心指标。如果继续叠加第三、第四类指标,读者会很难抓住重点。

      如果一张图需要解释半天才能看懂,说明图表设计已经失败了。


    9号标题图

    9. 我的总结提升

      这一篇的核心,不是简单学会 `bar()`、`plot()`、`twinx()` 这几个函数,而是理解组合图在真实办公场景中的作用。

      我从这一节带走的核心方法是:

  • 柱形图看数量:适合表达规模、总量、月度数量;
  • 折线图看趋势:适合表达变化、比率、完成率;
  • 同量级用同轴:简单直观,适合快速趋势对比;
  • 不同量级用双轴:避免某一类指标被压扁;
  • 图表必须验证:不只是能生成,还要能正确表达业务含义。
  •   真正可交付的自动化图表,不是“代码跑通”,而是“别人不用你解释,也能看懂这张图在说什么”。

      如果只会复制代码,但不能判断什么时候同轴、什么时候双轴,那遇到真实数据时还是容易画出误导图。

      下一篇可以继续往图表分析方向推进,比如堆积图、箱线图、雷达图等。它们解决的不是“会不会画图”,而是更进一步回答:结构怎么变、异常在哪里、短板是什么。


    返回顶部

    请添加图片描述

    赞(0)
    未经允许不得转载:171主机测评 » 《超简单:用 Python 让 Excel 飞起来》读书笔记:第8章 扩展 制作组合图表展示多维信息
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址