朋友不会让朋友制作某些类型的数据可视化 - 它们是什么以及为什么不好。
这是一篇关于数据可视化好坏实践的主观文章。 以下是示例和解释。
Scripts/
目录包含生成下面所示图形的.Rmd
文件。
它需要R、RStudio和rmarkdown包。
这必须是第一个。 均值分离图在科学出版物中是最常见的。 我们有两个或更多组,每组包含多个观察值;它们可能有不同的均值、方差和分布。 可视化的任务是显示数据的均值和分散程度。
在这个例子中,两组有相似的均值和标准差,但分布却很不同。它们真的"相同"吗? 只是不要为均值分离使用条形图,或者至少在决定使用条形图之前检查一些事项。
值得一提的是,我受到了许多在推特上谈论条形图局限性的研究人员的启发。 这里有一篇出版物:Weissgerber等人,2015年,PLOS Biology。
这在文献中也很常见,但不幸的是,小提琴图(或任何种类的平滑分布曲线)对于小样本量没有意义。
即使底层观察值相似,小样本量的分布和四分位数也可能差异很大。 分布和四分位数只有在大样本量时才有意义。 我之前做过一个实验,多次从同一个正态分布中抽样,并计算每个样本的四分位数。 只有当n大于50时,四分位数才趋于稳定。
请原谅我的用词,但这确实是数据可视化的罪过,而且同样很常见。 我能理解为什么这个错误很普遍,因为似乎我们中的许多人并没有花太多心思思考这个问题。
色标很漂亮,但我们必须格外小心。 当色标(或颜色渐变)用于表示数值数据时,最深和最浅的颜色应该有特殊含义。 你可以决定这些特殊含义是什么:例如,最大值、最小值、平均值、零。但它们应该代表有意义的东西。 热图/颜色渐变的数据可视化罪过是最浅或最深的颜色代表某些任意数字。 *这和条形图中最长的条不是最大值一样糟糕。*你能想象吗?
我们讨论过不要为均值分离制作条形图,但这是一个不同的问题。 它与呈现多因素实验结果有关。 条形图草原在科学出版物中非常常见,但不幸的是在传达结果方面也效果不佳。
数据来源:Matand等人,2020年,BMC Plant Biology
条形图草原很常见,因为多因素实验很常见。 然而,条形图草原的设计不适合其目的。 要传达多因素实验的结果,需要仔细考虑如何按感兴趣的因素进行分组/分面。 在这个例子中,我着重比较了在每个"品种"水平上"处理"和"外植体"对"响应"的影响。 然而,如果关注点是在每个"外植体"水平上"处理"和"品种"对"响应"的影响,那么就需要不同的布局。
热图在科学出版物中非常常见,在组学论文中更是极其普遍。 然而,要使热图有效,我们必须考虑行和列的排序。
在这个例子中,我将细胞作为列,特征作为行。网格显示的是z分数。 如果不重新排序行和列,就 不可能从热图中获得任何有用的信息。 我们可以使用聚类来重新排序行和列,但这不是唯一的方法。 当然,如果行和列映射到物理实体(96孔板的行和列),那么就不能重新排序它们。 但至少考虑重新排序行和列是一个很好的想法。
...如果你善于重新排序行/列并选择颜色渐变。 这里是一个使用模拟数据生成的"抽象艺术"示例。
这幅艺术作品的R代码可以在这里找到。
关于如何重新排序热图的行和列的教程,请参见此Markdown文件。
热图中的异常值真的会改变我们对可视化的感知和解释。 这一点适用于所有使用颜色表示数值数据的可视化方式。 让我给你举个例子:
在这个例子中,我有2个观察值。对于每个观察值,我测量了20个特征。 如果不检查异常值,可能会觉得这两个观察值总体上是相似的,只是在2个特征上有差异。 然而,在将颜色刻度限制在数据的95百分位左右后,就显示出这两个观察值在所有特征上都是不同的。
这是我们许多人都遇到过的常见问题。 在多因素实验中,有时响应变量的范围在不同因子水平之间变化很大。
这个假设的实验测量了2个组(对照组vs.处理组)中的3种化合物。 如果不检查每种化合物的数据范围,你很可能会错过处理对化合物1有强烈影响这一点。 这是因为在这个实验中,化合物1的浓度范围比其他化合物要窄得多。
网络图在科学出版物中很常见。它们在展示关系数据方面非常有用。 然而,网络的外观(而非拓扑结构)可能会对网络图的有效性产生巨大影响。
布局可以极大地改变网络的外观,使它们更容易或更难理解。 这里有3个来自同一数据的网络图。它们看起来非常不同。 数据来源:Li et al., 2022, BioRxiv
这里是同一网络的9种不同布局。它们看起来可以非常不同。
制作这个动画的R脚本可在这里找到
这总是房间里的大象,也是许多误导性可视化的本质。 在这个例子中,我测量了3个时间点的响应变量。 以下三个图中有两个是没问题的,但其中一个是数据可视化的罪行。你能看出为什么吗?
在点图和线图中,值由x轴和y轴上的位置表示。 同样的理念也适用于其他基于位置的可视化,如箱线图。 在条形图中,值由距离x轴的距离表示,因此是条形的长度。
第3个图不是从0开始的,这使得时间点2的条形长度约为时间点1的3倍。 事实上,真实的平均值差异更接近1.6倍。 我希望你能看出混淆长度和基于位置的可视化如何导致误导性的图表。
断轴可能对描绘跨越широ范围数值的数据有用。 (或者,可以使用对数刻度轴代替。) 对于基于位置的图形来说,断轴是可以的,因为数据是由轴上的位置表示的。 然而,我们必须非常小心带有断轴的条形图。这里有一个例子。
在这个例子中,两个图(左vs.右)显示的是相同的数据。 然而,通过改变轴的断点位置,可以使某些条形看起来更长或更短。 在这个例子中,条形"d"的长度可能看起来非常不同。 右图中条形"d"看起来很短的错觉归根结底是因为条形图是基于长度的图形,而不是基于位置的图形。
断轴的示例R代码可以在这里找到。
饼图是分数数据的常见可视化类型,其中分数加起来等于100%。 这是通过将一个圆分成扇形来实现的,扇形加起来构成一个完整的圆。 饼图受到批评,因为人类在读取角度和面积方面比读取长度要差得多。 这里有一篇博客文章探讨了这一点。
在这个例子中,我们有两组,每组包含4个子类别。
在经典饼图中,角度(因此也包括弧长和扇形面积)代表数据。
问题是很难在组间进行比较。
我们可以将饼图简化为环形图,数据现在由弧长表示。
然而,如果我们想用长度来表示数据,为什么不直接展开环形图,制作堆叠条形图呢?
在堆叠条形图中,条形并排显示,因此更容易在组间进行比较。
有趣的事实:堆叠条形图的底层脚本比饼图和环形图的底层脚本简单得多。 如果你想用ggplot制作次优的图表类型,实际上你需要付出更多努力。
在这个例子中,我们有3个组,每个组包含两个子类别(I型或II型)。
在同心环形图中,你可能会认为数据由弧长表示,但这实际上是不准确的。 外环的弧长比内环的弧长长得多。 第2组和第3组的数值完全相同,但第3组的弧长要长得多。 事实上,数据是由弧角表示的,而我们不擅长读取弧角。
由于外环更长,组的排序(哪个组在哪个环上)对图表的印象有很大影响。 这可能导致一个明显的悖论,即较大的值反而有较短的弧。 更好(且更简单!)的替代方案是展开环形图,制作一个传统的堆叠条形图。 顺便说一下,这也是我对circos图和其他圆形布局图表的主要问题。
绿色弱是最常见的红/绿色盲类型,在男性中发生率为1/16,在女性中为1/256。 任何同时使用红色和绿色阴影的色标对红/绿色盲的人来说都是一个问题(图中第三列)。 此外,红/绿和彩虹色标在黑白打印时(灰度,图中第二列)完全无法保留信息。 许多科学软件仍然使用红/绿或彩虹作为默认色标,这让我很恼火。 更"现代"的色标,如viridis既适合色盲,又适合灰度打印(图中第三行)。 而且它们看起来也很不错。
堆叠条形图对于可视化比例数据很有用。 堆叠条形图常用于可视化群落结构、种群结构或混合分析。 这种可视化归结为一组样本,每个样本包含多个类别的成员。 然而,当我们有很多样本和类别时,堆叠条形图需要优化才能有效。 这里的"优化"指的是样本的分组和排序。
这里我们有一个包含100个样本和8个成员类别的示例数据。 由于样本和类别的数量众多,如果不优化条形的顺序,很难从这个图中看出任何东西。我到底在看什么? 重新排序条形后,哇,这真的产生了很大的差异,你不觉得吗? 关于如何优化堆叠条形图的教程,请参阅这个脚本。
有时,当可视化试图同时实现太多目标时,会变得混乱和无效。 一个这样的例子是混合使用堆叠条形图和均值分离图。 一个显示总和为100%的比例数据,另一个显示均值之间的差异和均值周围的离散程度。 这些在数据可视化中是非常不同的任务。
在这个假设的实验中,我们将蓝莓植株分为两组。 一组是对照组;另一组用化学药品处理以加快果实发育。 每组有5株植物。 处理的反应分为3类: 浅绿色果实、浅蓝色果实和深蓝色果实。 对每株植物的100个果实进行检查,并计算每类果实的数量。 计算并报告了每类果实的百分比。 研究的问题是:化学处理是否有效?
第一个堆叠条形图作为可视化比例数据的标准方式是没问题的。 很明显,所有类别加起来等于100%, 化学处理强烈地将颜色分布转向了最发达的阶段(深蓝色)。
中间的堆叠条形图存在问题, 主要是因为它试图同时完成两个不同的数据可视化任务。 当误差线和点叠加在堆叠条形上时, 变得不清楚哪些误差线和点在进行比较。 由于堆叠条形的性质,上部堆叠的误差线和点必须向上移动, 因此对于误差线和点来说,y轴的解释变得不直观。
最后,如果可视化的主要目的是均值分离和均值周围的离散程度, 第三个图是更好的选择。 对于正在进行的比较没有任何歧义。 如第一个堆叠条形图所示, 化学处理显著增加了深蓝色果实的比例, 同时减少了浅色果实的比例。
暂时就这些。当我有时间(和灵感)制作更多例子时,我会更新这个内容。 不确定下一个会是什么,但请继续关注!
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户 提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模 型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快 速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号