让我们来谈谈统计——面向软件质量的统计入门(No.6 实务中有效图表的正确使用)
Back to Top
为了覆盖更广泛的受众,这篇文章已从日语翻译而来。
您可以在这里找到原始版本。
引言
#在“让我们来谈谈统计”第6期中,我们将以实务中图表的正确使用为主题展开讨论。
在需要将数据“传达”给对方的场合,图表的使用方法极为重要。
无论分析多么正确,如果在图表的选择和绘制上出错,都有可能导致误解或不信任感。
这次,将整理实务中常见的以下6种基本图表的使用区分要点。
- 柱状图(Bar Chart):最适合按类别进行数量比较
- 折线图(Line Chart):有效地把握时间序列的变化和趋势
- 散点图(Scatter Plot):可视化两个数值之间的关系
- 直方图(Histogram):把握连续数据的分布形状
- 箱线图(Box Plot):最适合可视化数据的分散、偏斜和异常值
- 帕累托图(Pareto Chart):用于判断重点对策和进行优先级排序
此外,还将结合“切勿使用的图表”示例,共享具有说服力的资料制作视角。
柱状图:最适合按类别进行比较(Bar Chart)
#柱状图(Bar Chart)是能够直观把握各类别“数量差异”的最基本图表。
它擅长掌握数据的趋势和平衡,作为质量分析的第一步也非常有效。
● 软件质量示例
#● 适用场景
#- 按缺陷类型的件数(示例:逻辑类 vs UI类)
- 按月的评审次数(作为时间序列分析的第一步)
- 按开发团队的生产效率(示例:每个故事点的完成件数)
如果目的是按类别进行“量的比较”,柱状图是最合适的。
此外,还可以一目了然地掌握数据趋势(例如:仅A团队异常多)。
● 要点
#- 纵轴为数量,横轴为类别(数值 vs 分类)
- 柱的长度或高度都有意义
- 即使项目数量很多也容易进行比较
- 适用于无序类别数据(名义尺度)
※使用横向柱状图(横条图)可以提高标签的可读性。
● 实务中的陷阱
#- 对于月份或流程阶段等具有顺序性的数据,折线图更为合适。
若使用柱状图,则不易看出“时间序列的流向”。 - 当柱的颜色具有特定含义(例如:表示严重程度差异)时,若无图例会引发误解,因此需特别注意。
- 还应注意图表的顺序(排列)。若按字母顺序或随意排序,趋势就难以读取。
折线图:擅长时间序列变化(Line Chart)
#折线图(Line Chart)是非常适合表示随时间推移的变化和趋势的图表。
在软件开发中,经常用于可视化进度状况和质量的变化。
● 软件质量示例
#● 适用场景
#- 按日或周统计的缺陷发生件数变化(用于异常的早期发现)
- 月度评审完成率(用于确认改善效果)
- 各流程阶段的测试通过率(用于评估各阶段的稳定性)
如果目的是把握“流程”或“增减趋势”,折线图最为有效。
尤其在衡量改善活动效果或检测异常时非常有用。
● 要点
#- X轴通常为时间轴(日、周、月等)
- 可以通过线条的颜色或样式区分并同时显示多个系列(如按团队或类别)
- 通过叠加趋势线或目标线,可以直观把握与目标的差距或趋势
- 即使数据点很多,通过折线连接也能将其视为平滑变化
● 实务中的陷阱
#- 将无序数据(类别型)硬性用折线图表示易引起误解(例如:按评审负责人统计的缺陷数等)
- 当数据点很少时(例如:仅3个点),直线反而会被过度强调,可能误认为是“趋势”
- 剧烈变化会给人视觉上的强烈冲击,甚至妨碍冷静判断
折线图是“处理时间序列图表的基础”。
但若使用时机不当,会导致误解或过度依赖,因此需谨慎。
散点图:当想要观察关系时(Scatter Plot)
#散点图(Scatter Plot)用于可视化两个数值数据间的关系性(相关)。
在软件质量管理中,也能有效把握各种变量间的联系。
● 软件质量示例
#● 适用场景
#- 测试用例数量与缺陷数量的关系:评估测试设计的有效性
- 评审所需时间与指出数的关系:确认评审的质量与效率
- 修正工时与影响范围的关系:验证是否更大范围的改动需要更多工时
当想一目了然地了解“是否存在相关”以及“趋势程度”时,散点图最为合适。
● 要点
#- X轴和Y轴都取连续数值数据(例如:所需时间、件数、行数等)
- 不仅可判断是否相关,还可有效检测离群值(明显与其他点不同)
- 通过添加趋势线(回归直线(※1)),可明确关系方向(正/负)及强度
- 可通过散点的形状(纵长、横长、分布宽度)直观理解关系性质
※1:回归直线是指最能拟合散点图上数据点的“趋势线”。
它可以一目了然地把握数据的趋势(是增加趋势还是减少趋势)。
也可用于未来预测和相关关系的定量化(详见后续章节)。
● 实务中的陷阱
#- 将类别数据(例如:负责人姓名或模块名称)用散点图表示没有意义
→ 此时应选择柱状图或箱线图更为合适。 - 若点过于密集重叠,就难以看清分布的实际情况
→ 可通过调整**透明度(alpha)、点大小或使用Jitter(微小偏移)**来提高可视性。 - 若点包含时间序列信息,通过颜色或标记的变化来表达时间也很有效。
散点图是“探索相关性的第一步”。
但需注意,相关并不代表因果。
直方图:把握分布形状(Histogram)
#直方图(Histogram)是视觉化捕捉连续数据分布特性的基本方法。
将数值范围分割为若干“箱(bin)”(※2),并用棒的高度表示每个箱中包含的数据件数(频率)。
※2:“箱(bin)”是将数据范围分成若干区间时的“区间”本身。
将数据分入各区间(箱)后,用棒的高度表示该区间内的数据数量(频率)。
例:数据分布在0~100范围内,若分成10个箱,则:
・箱宽 = 10
・各箱:0–10、10–20、20–30 … 90–100
每个区间中的数据数即为对应的棒的高度。
-
如何决定箱的数量:
箱的数量(≈棒的根数)会对外观和分析结果产生重大影响。-
手动设置(示例:10~20箱)
- 简单,但带有主观性。
- 如果箱的数量太少,则数据表现得过于粗略;太多则过于细碎,反而难以判断。
-
自动决定方法(典型示例)
● Sturges公式:- n = 数据量,k = 箱数
- 适用于接近正态分布的情形
- 对初学者而言是推荐的简易规则
● Freedman–Diaconis法则(对异常值鲁棒):
- h = 箱宽,IQR = 四分位距
- 适用于存在异常值或非正态分布的情况
- 箱的“数”由下式决定:
● Scott规则:
- n = 数据量
- σ = 标准差
- 箱的“数”由下式决定:
-
● 软件质量示例
#● 适用场景
#- 当想要确认响应时间、处理时间、测试执行时间、内存使用量、评审所需时间等包含连续值的定量数据的分布时
- 当想一目了然地把握**数据的分散、偏态、异常值、分布峰数(多峰性)**等时
- 当想直观检查是否为正态分布时(作为描述统计或假设检验(※3)的前提确认)
※3:假设检验(Hypothesis Testing)是一种
用统计方法判断**“数据得出的结果是偶然造成的,还是具有意义差异”的方法。
例如,
・“这项改进措施真的缩短了评审时间吗?”
・“该团队的缺陷数量差异是偶然的吗?”
等疑问时,假设检验是给出统计结论的方法**。
本文不会详细讨论,但在通过描述统计掌握了趋势之后,
假设检验是判断是否能将结论推广到总体的工具。
后续章节会详细说明。
● 要点
#- 可可视化数据整体的形状(分布)
→ 例如:左右对称、右偏、具有多个峰(多峰性)等 - 叠加显示平均值、中位数、众数,可以更容易理解代表值的差异
- 通过调整箱的数量,可以粗略或详细地观察分布(过多或过少都不合适)
- 可与其他分布(例如:正态分布)叠加比较,从而了解“偏差程度”
● 实务中的陷阱
#- 箱宽或箱数的设置会大幅改变视觉效果
→ 应使用固定规则(如Sturges公式、Freedman–Diaconis法则等),或根据目的进行调整 - 若存在偏离的异常值,尺度会被拉伸,难以把握整体形状
→ 可使用对数尺度或将异常值分离显示等方法 - 不适合用于类别数据或离散值(此时使用柱状图更合适)
直方图是“最先应该看的图表”之一。
当了解分布形状后,更易判断使用哪种代表值或离散度指标更为合适。
箱线图:可视化异常值与数据分散(Box Plot)
#箱线图(Box Plot)是一种强大的图表,可在一张图上可视化数据的分布范围、偏斜和异常值。
其基于四分位数,能同时展示中位数、四分位距(IQR)、最大值、最小值、异常值等信息。
● 软件质量示例
#● 适用场景
#- 可视化具有“分散性的连续数据”,如评审时间、修复工时、测试执行时间等
- 当想要比较多个团队或每月的分散情况时
- 当想要检查各流程的稳定性或是否存在异常时(例如:某个月极端异常值较多)
● 要点
#- 箱体中央线:中位数(第2四分位数)
- 箱体上下:第1四分位数(Q1)到第3四分位数(Q3) → 四分位距(IQR)
- 须(线段):通常表示从 “Q1 − 1.5×IQR” 到 “Q3 + 1.5×IQR”
- 异常值(Outliers):超出须表示范围的数据点(通常以●等符号标出)
- 可通过箱体位置及须的长度读出分布的偏斜(歪斜)
● 实务中的陷阱
#- 不要仅根据箱体形状或异常值的有无来判断为“异常”
→ 分布的偏斜或极端分散也可能是数据性质所致 - 当样本量极少时,准确解读较为困难
→ 即使看似异常值众多,也可能只是正常分散 - 在比较多个组时,要注意统一坐标轴的刻度
箱线图是一种能同时捕捉“分布范围、偏斜和异常值”的便捷工具。
为了把握仅凭平均值无法看出的“实务风险”,它是第一批应绘制的图表之一。
关于箱线图,我们也在其他文章中进行了介绍,欢迎阅读。
帕累托图:最适合优先级排序(Pareto Chart)
#帕累托图是将柱状图和折线图结合的图表,可同时可视化各因素的件数及其累积比例。
它用于洞察“重要少数 vs. 次要多数(80:20法则)”,适合进行资源集中分配和改进优先级排序。
● 软件质量示例
#以下是按缺陷类型统计件数及累积贡献率的示例。
在此示例中,可见若解决排名前3的缺陷类型“逻辑”、“UI”、“规范遗漏”,即可处理近80%的缺陷。
- 红色柱:缺陷件数(按数量降序)
- 蓝色线:累积贡献率(%)
- 左轴:件数,右轴:百分比
● 适用场景
#- 可视化按缺陷发生原因、评审指出内容等类别的发生数
- 质量改进的优先级排序
- 当想要对重要性高的问题进行集中处理时
● 要点
#- 柱状图:各类别的发生件数(按多寡排序)
- 折线图:累积贡献率(%)
- 通常,左侧少数类别占整体的大部分(80%)
- 可直观区分“重要少数”和“次要多数”
● 实务中的陷阱
#- 类别的排列顺序若不按“发生件数降序”则毫无意义
→ 随意排列会让累积线失去其意义 - 由于柱状图的纵轴(件数)和折线的纵轴(%)是不同坐标轴,若不明确标注轴标签会引发混淆
- 仅针对“若干上位类别”进行处理是否合适还需现场判断
→ 也可能存在严重问题隐藏于少数类别中
帕累托图是告诉我们“应优先处理什么?”的“决策工具”。
作为有限资源有效分配的可视化手段,在质量分析现场非常有用。
切勿使用的图表示例
#本应传达数据的图表,有时反而会引发误解或混乱。
以下是在实务中常见但应避免的图表表达示例。
-
3D图表(过于注重外观易引发误读)
- 柱状图或饼图的立体显示会因深度错觉而难以准确识别实际数值比例。
- 尤其在饼图中,前方的扇形显得更大,更容易导致比例误读。
→ 原则上,2D表现已足够。
-
过度装饰的图表(过多的色彩、阴影、动画)
- 渐变、动画和过多的颜色会有更关注视觉冲击而非数据比较的风险。
- 会分散读者注意力,使得想传达的内容不明确。
→ 颜色数量原则上应控制在3种左右,仅突出重点部分。
-
并排使用不同刻度的坐标轴(易产生错误印象)
- 若随意将左轴和右轴刻度不同的图表组合,会让人产生“看似两条线走势相似”的错觉。
- 有时会给人刻意做文章的印象。
→ 双轴图表应明确补充说明,并清晰标注轴标签。
▶ 总体上最重要的是:
#图表的目的在于“传达信息”,而非“装饰”。
请务必避免引导对方误读,保持诚实且易于理解的表达。
总结
#- 图表是展示“比较”、“变化”、“关系”的工具。请使用各自适合的形式
- 需要根据数据类型(类别或数值、时间序列或非时间序列)进行选择
- 不恰当的图表可能变成“谎言”。始终将“可传达”放在首位
下期预告
#下期预告为“Python与Excel绘制统计图表入门”。
将带来实际代码,以及可在实务中立即使用的图表绘制方法和工具使用方式。
在此汇总了统计相关信息。
希望能对您的数据分析有所帮助。