数据绘图要点2-Y轴的开始与结束

切割或不切割Y轴可能是数据可视化中最具争议的话题之一。基本上,主要问题在于 Y 轴是否应始终从零开始。数据可视化的目的是讲述一个故事,图形表达方式会对可视化讲述的故事产生重大影响。好的可视化可以带出数据的重要方面,但可视化也可以用来隐藏或误导。我们将探讨这一看似简单的问题的一些微妙之处。

Y轴的开始

不好的实例

让我们从显示问题的条形图开始。我们从一个众所周知的问题开始:绘制Y轴(因变量)不从0开始的条形图。条形图由德国经济发展机构 GTAI 创建,来自一个有关德国劳动力市场的网页。在随附的文本中,该机构吹嘘德国工人比其他欧盟国家的工人更有动力,工作时间更长。

看起来德国比瑞典等其他国家有很大的优势,更不用说法国了,对吧?不,这个差距的大小是一种错觉。该图具有误导性,因为表示工作时间的横轴并未归零,而是在 36 处截断。下面,我们重新绘制了该图,其中因变量轴一直归零。现在国家之间的差异似乎可以忽略不计。您可能会注意到,在重新绘制的图表中,我们删除了分隔国家/地区的水平网格线。这些并不是特别具有误导性,但它们增加了视觉混乱,没有任何作用。

好的实例

虽然条形图中的条形应该(几乎)总是延伸到零,但折线图不需要在因变量轴上包含零。例如,下面来自加利福尼亚预算和政策中心的折线图非常好,尽管Y轴不从0开始。

有什么区别?为什么条形图需要在Y轴上包含0,而折线图不需要这样做?一种观点是,这两种类型的图表讲述了不同的故事。通过其设计,条形图强调与每个类别相关的值的绝对大小,而折线图强调因变量(通常为Y值)随自变量(通常为X值)的变化而变化。

那么在某些情况下,如果折线图的Y轴从0开始,会出现什么样的情况? 下图是一张被广泛分享用于表现气候变化的折线图,该折线图的Y轴从0开始。可以得出结论候,气候根本没什么变化。视觉效果看起来像一条扁平线。我们不会看到任何变化,这样这张图对我们来说将变得毫无意义。

但是如果我们通过适当的选择尺度显示,该折线图可能变成下面这样。很显然,这一变化与我们平时所看到的,感受到的是一致的。

因此除了条形图,一般提倡使用基于数据合理的Y轴。也许轴的最小值是您历史上的最低点,也许是您的团队决定需要采取不同行动的触发点。随便设置,只要让它有意义,而不是软件自动为您决定,这是您需要思考的地方。对于那些0不在可能的数据点范围内,则更加不能够将其包含在Y轴中。

Y轴的结束

有些人认为Y轴必须以值的理论最大值为结束。下图表示的是一项调查情况,这会压缩数据并形成一个尴尬的图表,我们无法完全看到发生了什么。这些项中的任何一条实际中都不可能达到100%,因此,Y轴可以不以100%为结束。

如果我们选择一个更接近真实数据结束位置的轴,我们实际上可以更清楚地看到数据。

虽然这确实让我们的数据全面可见,但它可能会遗漏部分故事。如果我们定了一个目标,设置这些项离我们的目标有多远。比如我们有将报告为盟友ally的百分比提高到 75% 的目标。那么75%可以成为该条形图Y轴的结束点。最好让我们这样标记目标,以便我们的目标是显而易见的。

总结

总之,数据可视化会讲故事。相对微妙的选择,例如条形图或折线图中轴的范围,会对图形讲述的故事产生重大影响。当您查看数据图形时,您需要问问自己图形是否旨在讲述一个准确反映基础数据的故事,或者它是否旨在讲述一个希望大家能看到的故事。

条形图强调与每个类别相关的值的绝对值,而折线图强调因变量通常是Y值随着自变量(通常是X值)的变化而发生的变化,这是重点。因此:

  • 条形图:对于这种图表有共识:Y轴应该从0开始。
  • 折线图:对于这种图表没有达成共识,Y轴通常不必0开始。

至于Y轴的结束点,关键问题是你应该为你的Y轴选择一个有意义的最大值。也许最大值是您的目标,这样轴本身就成为您需要讲述数据的故事的一部分。

参考

[数据分析与可视化] 数据绘图要点2-Y轴的开始与结束的更多相关文章

  1. Highcharts属性与Y轴数据值刻度显示Y轴最小最大值

    Highcharts 官网:https://www.hcharts.cn/demo/highcharts Highcharts API文档:https://api.hcharts.cn/highcha ...

  2. Python数据分析matplotlib可视化之绘图

    Matplotlib是一个基于python的2D画图库,能够用python脚本方便的画出折线图,直方图,功率谱图,散点图等常用图表,而且语法简单. Python中通过matplotlib模块的pypl ...

  3. Echart实现多个y轴,坐标轴的个数及名称由后台传过来的json数据决定。

    yAxis: function(){ var yAxis=[]; for(var i=0;i<legend1.length;i++){ var item={ name:legend1[i], t ...

  4. Chart.js Y轴数据以百分比展示

    新手一枚,解决的问题喜欢记录,也许正好有人在网上迷茫的百度着.-0- 最近使用Chart.js做折线图的报表展示,直接显示整数啥的很好弄毕竟例子直接在哪里可以用,百分比就没办法了.百度慢慢汲取营养,虽 ...

  5. 在线报表设计实战系列 – 制作多Y轴组合图表(8)

    葡萄城报表是一套强大的报表开发和系统搭建工具,既能与您开发的报表软件项目紧密集成,也可独立部署运行,支持多数据源,具有无编码.灵活.稳定等特性,可以帮您快速搭建专业的报表软件系统,实现各类报表的设计. ...

  6. 学机器学习,不会数据分析怎么行——数据可视化分析(matplotlib)

    前言 前面两篇文章介绍了 python 中两大模块 pandas 和 numpy 的一些基本使用方法,然而,仅仅会处理数据还是不够的,我们需要学会怎么分析,毫无疑问,利用图表对数据进行分析是最容易的, ...

  7. 《Python数据分析》笔记——数据可视化

    数据可视化 matplotlib绘图入门 为了使用matplotlib来绘制基本图像,需要调用matplotlib.pyplot子库中的plot()函数 import matplotlib.pyplo ...

  8. 2017 年 机器学习之数据挖据、数据分析,可视化,ML,DL,NLP等知识记录和总结

    今天是2017年12月30日,2017年的年尾,2018年马上就要到了,回顾2017过的确实很快,不知不觉就到年末了,再次开篇对2016.2017年的学习数据挖掘,机器学习方面的知识做一个总结,对自己 ...

  9. 动态可视化 数据可视化之魅D3,Processing,pandas数据分析,科学计算包Numpy,可视化包Matplotlib,Matlab语言可视化的工作,Matlab没有指针和引用是个大问题

    动态可视化 数据可视化之魅D3,Processing,pandas数据分析,科学计算包Numpy,可视化包Matplotlib,Matlab语言可视化的工作,Matlab没有指针和引用是个大问题 D3 ...

随机推荐

  1. MatrixOne Linux 编译文档

    MatrixOne Linux 编译文档 编译环境 硬件环境 操作系统 内存 CPU 磁盘 Windows环境下的Linux虚拟机 Linux version 3.10.0-1160.el7.x86_ ...

  2. struts项目向前台返回图片。

    读取项目路径WebRoot下的图片 编写action package com.sadj.market.action; import java.io.BufferedInputStream; impor ...

  3. day10-习题

    习题 1.Homework01 (1) D -- 没有在别名上加引号(ps:别名的as可以省略) (2) B -- 判断null或非空不能用不等于号 (3) C 2.Homework02 写出查看de ...

  4. python用ffmpeg进行视频处理

    1.下载及安装 在ffmpeg官网https://ffmpeg.zeranoe.com/builds/可以下载到需要的版本,然后解压到D盘,添加环境变量(如D:\ffmpeg\bin) 在cmd输入f ...

  5. 一篇了解全MVCC

    一.什么是MVCC MVCC,全称Multi-Version Concurrency Control,即多版本并发控制,是一种并发控制的方法,一般用在数据库管理系统中,实现对数据库的并发访问,比如在M ...

  6. 转载:Python 实现百度翻译

    来源: https://blog.csdn.net/qq_44814439/article/details/105642066 作者: Chloemxc 功能: Python 实现百度翻译 from ...

  7. 死磕面试系列,Java到底是值传递还是引用传递?

    Java到底是值传递还是引用传递? 这虽然是一个老生常谈的问题,但是对于没有深入研究过这块,或者Java基础不牢的同学,还是很难回答得让人满意. 可能很多同学能够很轻松的背出JVM.分布式事务.高并发 ...

  8. .NET 7.0 重磅发布及资源汇总

    2022-11-8 .NET 7.0 作为微软的开源跨平台开发平台正式发布.微软在公告中表示.NET 7为您的应用程序带来了C# 11 / F# 7,.NET MAUI,ASP.NET Core/Bl ...

  9. 【实操日记】使用 PyQt5 设计下载远程服务器日志文件程序

    最近通过 PyQt5 设计了一个下载服务器指定日期日志文件的程序,里面有些有意思的技术点,现在做一些分享. PyQt5 是一套 Python 绑定 Digia Qt5 应用的框架,是最强大的 GUI ...

  10. 【Docker】容器使用规范--安全挂载建议

    容器挂载过程和安全挂载建议 绑定挂载 本文所提到的挂载主要指绑定挂载(bind mount),即通过-v /xx/xx:/xx/xx 和 --mount type=bind,xxx,xxx两种方式设置 ...