FriendsDontLetFriends

FriendsDontLetFriends

数据可视化最佳实践 避免常见图表错误

本项目是一份数据可视化最佳实践指南,详细介绍了多种常见的图表错误及其解决方案。内容涵盖不当使用条形图、小提琴图、色标等问题,并提供了改进建议和示例。该指南旨在帮助研究人员识别和避免数据可视化陷阱,从而创建更有效、准确的图表,提升科研成果的展示质量。

数据可视化图表制作统计图表数据分析R语言Github开源项目

朋友不会让朋友制作糟糕的图表

DOI

朋友不会让朋友制作某些类型的数据可视化 - 它们是什么以及为什么不好。

  • 作者:李晨欣博士,佐治亚大学作物与土壤科学系和应用遗传技术中心助理研究科学家。
  • 联系方式:Chenxin.Li@uga.edu | @ChenxinLi2

这是一篇关于数据可视化好坏实践的主观文章。 以下是示例和解释。

Scripts/目录包含生成下面所示图形的.Rmd文件。 它需要R、RStudio和rmarkdown包。

目录

  1. 朋友不会让朋友为均值分离制作条形图
  2. 朋友不会让朋友为小样本量制作小提琴图
  3. 朋友不会让朋友为单向数据使用双向色标
  4. 朋友不会让朋友制作条形图草原
  5. 朋友不会让朋友在不重新排序行和列的情况下制作热图
  6. 朋友不会让朋友在不检查异常值的情况下制作热图
  7. 朋友不会让朋友忘记检查每个因素水平的数据范围
  8. 朋友不会让朋友在不尝试不同布局的情况下制作网络图
  9. 朋友不会让朋友混淆基于位置和长度的可视化
  10. 朋友不会让朋友制作饼图
  11. 朋友不会让朋友制作同心圆环图
  12. 朋友不会让朋友使用红/绿和彩虹色标
  13. 朋友不会让朋友忘记重新排序堆叠条形图
  14. 朋友不会让朋友混合堆叠条形图和均值分离

1. 朋友不会让朋友为均值分离制作条形图

这必须是第一个。 均值分离图在科学出版物中是最常见的。 我们有两个或更多组,每组包含多个观察值;它们可能有不同的均值、方差和分布。 可视化的任务是显示数据的均值和分散程度。

不要为均值分离制作条形图

在这个例子中,两组有相似的均值和标准差,但分布却很不同。它们真的"相同"吗? 只是不要为均值分离使用条形图,或者至少在决定使用条形图之前检查一些事项。

值得一提的是,我受到了许多在推特上谈论条形图局限性的研究人员的启发。 这里有一篇出版物:Weissgerber等人,2015年,PLOS Biology

2. 朋友不会让朋友为小样本量制作小提琴图

这在文献中也很常见,但不幸的是,小提琴图(或任何种类的平滑分布曲线)对于小样本量没有意义。

警惕小样本量的小提琴图

即使底层观察值相似,小样本量的分布和四分位数也可能差异很大。 分布和四分位数只有在大样本量时才有意义。 我之前做过一个实验,多次从同一个正态分布中抽样,并计算每个样本的四分位数。 只有当n大于50时,四分位数才趋于稳定。

3. 朋友不会让朋友为单向数据使用双向色标

请原谅我的用词,但这确实是数据可视化的罪过,而且同样很常见。 我能理解为什么这个错误很普遍,因为似乎我们中的许多人并没有花太多心思思考这个问题。

你是否为你的数据使用了正确的色标?

色标很漂亮,但我们必须格外小心。 当色标(或颜色渐变)用于表示数值数据时,最深和最浅的颜色应该有特殊含义。 你可以决定这些特殊含义是什么:例如,最大值、最小值、平均值、零。但它们应该代表有意义的东西。 热图/颜色渐变的数据可视化罪过是最浅或最深的颜色代表某些任意数字。 *这和条形图中最长的条不是最大值一样糟糕。*你能想象吗?

4. 朋友不会让朋友制作条形图草原

我们讨论过不要为均值分离制作条形图,但这是一个不同的问题。 它与呈现多因素实验结果有关。 条形图草原在科学出版物中非常常见,但不幸的是在传达结果方面也效果不佳

可怕的巨大条形图与设计更好的图表

数据来源:Matand等人,2020年,BMC Plant Biology

条形图草原很常见,因为多因素实验很常见。 然而,条形图草原的设计不适合其目的。 要传达多因素实验的结果,需要仔细考虑如何按感兴趣的因素进行分组/分面。 在这个例子中,我着重比较了在每个"品种"水平上"处理"和"外植体"对"响应"的影响。 然而,如果关注点是在每个"外植体"水平上"处理"和"品种"对"响应"的影响,那么就需要不同的布局。

5. 朋友不会让朋友制作热图时不(考虑)重新排序行和列

热图在科学出版物中非常常见,在组学论文中更是极其普遍。 然而,要使热图有效,我们必须考虑行和列的排序。

重新排序行和列前后的热图

在这个例子中,我将细胞作为列,特征作为行。网格显示的是z分数。 如果不重新排序行和列,就不可能从热图中获得任何有用的信息。 我们可以使用聚类来重新排序行和列,但这不是唯一的方法。 当然,如果行和列映射到物理实体(96孔板的行和列),那么就不能重新排序它们。 但至少考虑重新排序行和列是一个很好的想法。

数据来源:Li et al., 2022, BioRxiv

额外内容:热图可以非常美观

...如果你善于重新排序行/列并选择颜色渐变。 这里是一个使用模拟数据生成的"抽象艺术"示例。

热图艺术

这幅艺术作品的R代码可以在这里找到。

关于如何重新排序热图的行和列的教程,请参见此Markdown文件

6. 朋友不会让朋友制作热图时不检查异常值

热图中的异常值真的会改变我们对可视化的感知和解释。 这一点适用于所有使用颜色表示数值数据的可视化方式。 让我给你举个例子:

你检查过异常值吗

在这个例子中,我有2个观察值。对于每个观察值,我测量了20个特征。 如果不检查异常值,可能会觉得这两个观察值总体上是相似的,只是在2个特征上有差异。 然而,在将颜色刻度限制在数据的95百分位左右后,就显示出这两个观察值在所有特征上都是不同的。

7. 朋友不会让朋友忘记检查每个因子水平的数据范围

这是我们许多人都遇到过的常见问题。 在多因素实验中,有时响应变量的范围在不同因子水平之间变化很大。

你检查过每个因子水平的数据范围吗

这个假设的实验测量了2个组(对照组vs.处理组)中的3种化合物。 如果不检查每种化合物的数据范围,你很可能会错过处理对化合物1有强烈影响这一点。 这是因为在这个实验中,化合物1的浓度范围比其他化合物要窄得多。

8. 朋友不会让朋友制作网络图时不尝试不同的布局

网络图在科学出版物中很常见。它们在展示关系数据方面非常有用。 然而,网络的外观(而非拓扑结构)可能会对网络图的有效性产生巨大影响。

尝试不同的网络布局

布局可以极大地改变网络的外观,使它们更容易或更难理解。 这里有3个来自同一数据的网络图。它们看起来非常不同。 数据来源:Li et al., 2022, BioRxiv

这里是同一网络的9种不同布局。它们看起来可以非常不同。

不同的布局

制作这个动画的R脚本可在这里找到

动画的不同布局

9. 朋友不会让朋友混淆基于位置的可视化和基于长度的可视化

这总是房间里的大象,也是许多误导性可视化的本质。 在这个例子中,我测量了3个时间点的响应变量。 以下三个图中有两个是没问题的,但其中一个是数据可视化的罪行。你能看出为什么吗?

基于位置vs.基于长度的可视化

在点图和线图中,值由x轴和y轴上的位置表示。 同样的理念也适用于其他基于位置的可视化,如箱线图。 在条形图中,值由距离x轴的距离表示,因此是条形的长度。

第3个图不是从0开始的,这使得时间点2的条形长度约为时间点1的3倍。 事实上,真实的平均值差异更接近1.6倍。 我希望你能看出混淆长度和基于位置的可视化如何导致误导性的图表。

注意带有断轴的条形图

断轴可能对描绘跨越широ范围数值的数据有用。 (或者,可以使用对数刻度轴代替。) 对于基于位置的图形来说,断轴是可以的,因为数据是由轴上的位置表示的。 然而,我们必须非常小心带有断轴的条形图。这里有一个例子。

断轴

在这个例子中,两个图(左vs.右)显示的是相同的数据。 然而,通过改变轴的断点位置,可以使某些条形看起来更长或更短。 在这个例子中,条形"d"的长度可能看起来非常不同。 右图中条形"d"看起来很短的错觉归根结底是因为条形图是基于长度的图形,而不是基于位置的图形。

断轴的示例R代码可以在这里找到。

10. 朋友不会让朋友制作饼图

饼图是分数数据的常见可视化类型,其中分数加起来等于100%。 这是通过将一个圆分成扇形来实现的,扇形加起来构成一个完整的圆。 饼图受到批评,因为人类在读取角度和面积方面比读取长度要差得多。 这里有一篇博客文章探讨了这一点。

不要制作饼图 在这个例子中,我们有两组,每组包含4个子类别。 在经典饼图中,角度(因此也包括弧长和扇形面积)代表数据。 问题是很难在组间进行比较。 我们可以将饼图简化为环形图,数据现在由弧长表示。 然而,如果我们想用长度来表示数据,为什么不直接展开环形图,制作堆叠条形图呢? 在堆叠条形图中,条形并排显示,因此更容易在组间进行比较。

有趣的事实:堆叠条形图的底层脚本比饼图和环形图的底层脚本简单得多。 如果你想用ggplot制作次优的图表类型,实际上你需要付出更多努力。

11. 朋友不让朋友制作同心环形图

在这个例子中,我们有3个组,每个组包含两个子类别(I型或II型)。

不要制作同心环形图

在同心环形图中,你可能会认为数据由弧长表示,但这实际上是不准确的。 外环的弧长比内环的弧长长得多。 第2组和第3组的数值完全相同,但第3组的弧长要长得多。 事实上,数据是由弧角表示的,而我们不擅长读取弧角。

由于外环更长,组的排序(哪个组在哪个环上)对图表的印象有很大影响。 这可能导致一个明显的悖论,即较大的值反而有较短的弧。 更好(且更简单!)的替代方案是展开环形图,制作一个传统的堆叠条形图。 顺便说一下,这也是我对circos图和其他圆形布局图表的主要问题。

12. 朋友不让朋友使用红/绿和彩虹色标

你在制作"安全"的热图吗?

绿色弱是最常见的红/绿色盲类型,在男性中发生率为1/16,在女性中为1/256。 任何同时使用红色和绿色阴影的色标对红/绿色盲的人来说都是一个问题(图中第三列)。 此外,红/绿和彩虹色标在黑白打印时(灰度,图中第二列)完全无法保留信息。 许多科学软件仍然使用红/绿或彩虹作为默认色标,这让我很恼火。 更"现代"的色标,如viridis既适合色盲,又适合灰度打印(图中第三行)。 而且它们看起来也很不错。

13. 朋友不让朋友忘记重新排序堆叠条形图

堆叠条形图对于可视化比例数据很有用。 堆叠条形图常用于可视化群落结构、种群结构或混合分析。 这种可视化归结为一组样本,每个样本包含多个类别的成员。 然而,当我们有很多样本和类别时,堆叠条形图需要优化才能有效。 这里的"优化"指的是样本的分组和排序。

重新排序你的堆叠条形图

这里我们有一个包含100个样本和8个成员类别的示例数据。 由于样本和类别的数量众多,如果不优化条形的顺序,很难从这个图中看出任何东西。我到底在看什么? 重新排序条形后,哇,这真的产生了很大的差异,你不觉得吗? 关于如何优化堆叠条形图的教程,请参阅这个脚本

14. 朋友不让朋友混合使用堆叠条形图和均值分离图

有时,当可视化试图同时实现太多目标时,会变得混乱和无效。 一个这样的例子是混合使用堆叠条形图和均值分离图。 一个显示总和为100%的比例数据,另一个显示均值之间的差异和均值周围的离散程度。 这些在数据可视化中是非常不同的任务。

在这个假设的实验中,我们将蓝莓植株分为两组。 一组是对照组;另一组用化学药品处理以加快果实发育。 每组有5株植物。 处理的反应分为3类: 浅绿色果实、浅蓝色果实和深蓝色果实。 对每株植物的100个果实进行检查,并计算每类果实的数量。 计算并报告了每类果实的百分比。 研究的问题是:化学处理是否有效?

不要混合使用堆叠条形图和均值分离图

第一个堆叠条形图作为可视化比例数据的标准方式是没问题的。 很明显,所有类别加起来等于100%, 化学处理强烈地将颜色分布转向了最发达的阶段(深蓝色)。

中间的堆叠条形图存在问题, 主要是因为它试图同时完成两个不同的数据可视化任务。 当误差线和点叠加在堆叠条形上时, 变得不清楚哪些误差线和点在进行比较。 由于堆叠条形的性质,上部堆叠的误差线和点必须向上移动, 因此对于误差线和点来说,y轴的解释变得不直观。

最后,如果可视化的主要目的是均值分离和均值周围的离散程度, 第三个图是更好的选择。 对于正在进行的比较没有任何歧义。 如第一个堆叠条形图所示, 化学处理显著增加了深蓝色果实的比例, 同时减少了浅色果实的比例。

结论(?)

暂时就这些。当我有时间(和灵感)制作更多例子时,我会更新这个内容。 不确定下一个会是什么,但请继续关注!

编辑推荐精选

Manus

Manus

全面超越基准的 AI Agent助手

Manus 是一款通用人工智能代理平台,能够将您的创意和想法迅速转化为实际成果。无论是定制旅行规划、深入的数据分析,还是教育支持与商业决策,Manus 都能高效整合信息,提供精准解决方案。它以直观的交互体验和领先的技术,为用户开启了一个智慧驱动、轻松高效的新时代,让每个灵感都能得到完美落地。

飞书知识问答

飞书知识问答

飞书官方推出的AI知识库 上传word pdf即可部署AI私有知识库

基于DeepSeek R1大模型构建的知识管理系统,支持PDF、Word、PPT等常见文档格式解析,实现云端与本地数据的双向同步。系统具备实时网络检索能力,可自动关联外部信息源,通过语义理解技术处理结构化与非结构化数据。免费版本提供基础知识库搭建功能,适用于企业文档管理和个人学习资料整理场景。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

TraeAI IDE协作生产力转型热门AI工具
酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

使用教程AI工具酷表ChatExcelAI智能客服AI营销产品
DeepEP

DeepEP

DeepSeek开源的专家并行通信优化框架

DeepEP是一个专为大规模分布式计算设计的通信库,重点解决专家并行模式中的通信瓶颈问题。其核心架构采用分层拓扑感知技术,能够自动识别节点间物理连接关系,优化数据传输路径。通过实现动态路由选择与负载均衡机制,系统在千卡级计算集群中维持稳定的低延迟特性,同时兼容主流深度学习框架的通信接口。

DeepSeek

DeepSeek

全球领先开源大模型,高效智能助手

DeepSeek是一家幻方量化创办的专注于通用人工智能的中国科技公司,主攻大模型研发与应用。DeepSeek-R1是开源的推理模型,擅长处理复杂任务且可免费商用。

KnowS

KnowS

AI医学搜索引擎 整合4000万+实时更新的全球医学文献

医学领域专用搜索引擎整合4000万+实时更新的全球医学文献,通过自主研发AI模型实现精准知识检索。系统每日更新指南、中英文文献及会议资料,搜索准确率较传统工具提升80%,同时将大模型幻觉率控制在8%以下。支持临床建议生成、文献深度解析、学术报告制作等全流程科研辅助,典型用户反馈显示每周可节省医疗工作者70%时间。

Windsurf Wave 3

Windsurf Wave 3

Windsurf Editor推出第三次重大更新Wave 3

新增模型上下文协议支持与智能编辑功能。本次更新包含五项核心改进:支持接入MCP协议扩展工具生态,Tab键智能跳转提升编码效率,Turbo模式实现自动化终端操作,图片拖拽功能优化多模态交互,以及面向付费用户的个性化图标定制。系统同步集成DeepSeek、Gemini等新模型,并通过信用点数机制实现差异化的资源调配。

AI IDE
腾讯元宝

腾讯元宝

腾讯自研的混元大模型AI助手

腾讯元宝是腾讯基于自研的混元大模型推出的一款多功能AI应用,旨在通过人工智能技术提升用户在写作、绘画、翻译、编程、搜索、阅读总结等多个领域的工作与生活效率。

AI 办公助手AI对话AI助手AI工具腾讯元宝智能体热门
Grok3

Grok3

埃隆·马斯克旗下的人工智能公司 xAI 推出的第三代大规模语言模型

Grok3 是由埃隆·马斯克旗下的人工智能公司 xAI 推出的第三代大规模语言模型,常被马斯克称为“地球上最聪明的 AI”。它不仅是在前代产品 Grok 1 和 Grok 2 基础上的一次飞跃,还在多个关键技术上实现了创新突破。

下拉加载更多