数据可视化图表,你选对了吗?

2023-11-02


戳蓝字“CSDN云计算”关注我们哦!640?wx_fmt=jpeg

Photo by Jason Coudriet on Unsplash

文 | 

来源 | 阿里巴巴中间件


程序员懂画图,一宝变三宝。


继上期「阿里程序员小技巧」中,阿里巴巴技术专家三画分享了他关于《如何画好架构图》的经验,本期,菜鸟国际物流技术部高级开发工程师邻川将分享他在数据可视化图标方面的积累。



- 正文开始 -

?


常听到一句话,“能用图描述的就不用表,能用表就不用文字”。这句话也直接的表明了:在认知上,大家对于图形的敏感度远比文字高。


但同时我们也面临着这样一些问题:


写 PPT、做 demo 时,心中有万千想法和海量数据想要去展现,但总是最后还是以文字和枯燥的图表堆叠呈现了出来,苦于怎么把这些数据展现的直观、性感、一看就懂。


这时候,在心里怎么想和手上怎么画之间,差了一座“理解图表内涵”的桥梁了。


常见的图表选择原则文章有很多,这里只做简单总结,重点是从逆向来看常见场景选用以及按照数据关系选用,最后是使用中会遇到的一些常见问题。本文将分为以下两部分:


  • 两个优秀的数据可视化案例

  • 基础图形及特点

  • 如何选用图标

  • 常见的问题

作为视觉动物的我们,不妨先来看看惊艳全球的一些数据可视化的例子(原文链接)。



两个优秀的数据可视化案例



A. 按年龄段分布的美国人口百分比:


640?wx_fmt=gif                        

这个 GIF 动画,显示了随着时间推移的人口统计数量的变化。这是如何以令人信服的方式呈现一种单一的数据的好榜样。

 

B. 最有价值的运动队


640?wx_fmt=jpeg


这是通过叠加数据来讲述深层故事的一个例子。


这个交互由 ColumnFive 设计,受福布斯“2014年最具价值的运动队50强”名单得到的启发。但是它不仅将列表可视化,用户还可以通过它看到每支队伍参赛的时间以及夺得总冠军的数量。这为各队的历史和成功提供了更全面的看法。



基础图形及特点



接下来给大家介绍下数据可视化图表的基本类型和选用原则,选用正确的数据可视化的图表。


① 柱形图(Bar Chart)


640?wx_fmt=png


优势:柱形图利用柱子的高度,能够比较清晰的反映数据的差异,一般情况下用来反映分类项目之间的比较,也可以用来反映时间趋势。


注意:柱形图的局限在于它仅适用于中小规模的数据集,当数据较多时就不易分辨。一般而言,不要超过10个。


通常来说,柱形图的横轴是时间维度,用户习惯性认为存在时间趋势。如果遇到横轴不是时间维度的情况,建议用颜色区分每根柱子。 


衍生 - 堆叠柱状图:

640?wx_fmt=png

不仅可以直观的看出每个系列的值,还能够反映出系列的总和,尤其是当需要看某一单位的综合以及各系列值的比重时,比如:1-8月伦敦和柏林房产交易笔数(万)。  

 

② 条形图(Bar Chart)

640?wx_fmt=png

优势:条形图用来反映分类项目之间的比较,适合应用于跨类别比较数据。在我们需要比较项类的大小、高低时适合使用条形图。 


③ 折线图(Line Chart)

640?wx_fmt=png

优势:折线图用来反映随时间变化的趋势。当我们需要描述事物随时间维度的变化时常常需要使用该图形。 


衍生 - 光滑折线图(Smooth line chart)

假如关注的是数据反映的整体趋势,光滑折线图最适合,尤其是当数据波动较大时,采用折线图会显得很乱。

640?wx_fmt=png

衍生 - 面积图(Area chart):

折线图下方填充阴影,构成面积图,如果有两个或以上折线图,在各自折线的下方填充不同颜色的阴影,构成堆积面积图,便于了解折线的相对占比

640?wx_fmt=png

 

④ 饼图(Pie Chart)

640?wx_fmt=png

注意:饼图是一种应该避免使用的图表,因为肉眼对面积大小不敏感。是最容易被误用的。但在具体反映某个比重的时候,配上具体数值,会有较好的效果。


在需要描述某一部分占总体的百分比时,适合使用饼图。例如:占据公司全部资金一半的两个渠道;某公司员工的男女比例等。


而需要比较数据时,尤其是比较两个以上整体的成分时,请务必使用条形图或柱形图,切勿要求看图人将扇形转换成数据在饼图间相互比较,因为人的肉眼对面积大小不敏感,会导致对数据的误读。


另外,为了使饼图发挥最大作用,在使用中一般不宜超过6个部分,如需要表达6个以上的部分,也请使用条形图,扇形边个数过多,会导致饼图分块的意义解释过于困难。不要出现下面?这种饼图。

640?wx_fmt=jpeg

 

⑤ 散点图(Scatter Chart)

640?wx_fmt=png


散点图的数据为三维数据,使用两组数据构成多个坐标点,分析坐标点的分布情况,判断两个变量之间的关联或分布趋势。


可以用颜色区分系列,也可以用散点大小定第三维度,这就衍生图出了气泡图。

 

⑥ 气泡图(Bubble chart)


640?wx_fmt=png


气泡图是散点图的一种衍生,通过每个点的面积大小来衡量第三维度,适合三维数据的对比,且需要强调第三维,超过三维就搞不定。


衍生 - 力学气泡图(Mechanical bubble chart) 


640?wx_fmt=png


⑦ 雷达图(radar chart)

640?wx_fmt=png

雷达图适用于多维数据(四维以上),且每个维度必须可以排序。数据点一般6个左右,太多的话辨别起来有困难。

 


如何选用图标



在讲完了每种图表的优势和缺点,使用禁忌外,接下来就要为大家介绍:

 

① 按应用场景选择


虽然图表种类繁多,但是基于使用场景大致可以分为以下几种情况。


640?wx_fmt=png


基于这个大致的应用场景,可以初步选出可用的可视化图,但对于细微的选择差异,在下面会进一步的阐述;对于单一的可视化图无法满足需要时,就需要考虑组合展示,这里暂且不过多谈。


② 按数据关系选择


根据可视化专家 Andrew Abela 对该数据关系分类方式的提炼,他提出将图表展示的数据关系分为四类:比较、分布、构成和联系。下面对这四种关系以及应用举例和对应的可视化解决方案做了简要的分析。


640?wx_fmt=png

 
大部分情况下,我们根据这份选择指南按图索骥就可以找到,方便又轻松,在实际应用中,也存在需要展示多种数据关系的情况,那么对应的图表类型也是每种关系对应的基本图形的综合运用。例如多个时间点上构成的比较等。

 


常见问题



最后整理了一些常见问题,供大家在实际操作中使用。

 

Q: 柱形图和条形图都可以表示分类比较,那两者在使用上有何差异呢?

A: 当所比较项目的标签文本比较长时,柱形图的横轴下的标签会出现重叠或者倾斜,且占用空间大,影响阅读者的目光移动。所以在表示分类时,如项目数量较少,使用柱形图或条形图均可,如项目_数量较多_,则建议使用_条形图_。

 

Q: 柱形图和折线图都可以表示时间序列的趋势,如何选择?

A一般来说,建议使用折线图反映趋势变化。柱形图强调各数据点值之间的差异,折线图则强调起伏变化的趋势;柱形图更适于表现离散型的时间序列,_折线图适合表现连续型的时间序列_。所以当时间序列的_数据点较少时,可以使用柱形图_,而当数据点较多时,则建议使用折线图。

 

Q: 面积图和折线图都可以表示时间序列的趋势,两者之间如何选择?

A当只展示一个度量数据的趋势时,两者完全等价,都可以使用,通常使用折线图更多。

但是,当在大型会议室展示数据时,即读图人离图表可能较远的情况,使用面积图能让后排的人看的更清楚。当比较多个度量数据的趋势时,建议使用折线图。如使用面积图,则存在数据序列之间相互遮挡的情况,除了靠近横轴的那个数据序列外,很难观察出其他数据序列的变化趋势。


Q: 是不是应该避免使用饼图,能不用就不用?

A从精确比较数据的角度来说,条形图的确更易于比较数据点之间的差异,但每种图表都有它的长处和适用场景,饼图能给我们一种整体和构成的印象,适用于表达“占比”——看到饼图就让想起100%,这个特点是条形图所没有的。


但是要尽量避免并列使用两个及以上的饼图,虽然这种用法很常见。例如如下图,分布展示两个国家在不同年份家庭花销占比,由于读图人很难通过饼图直接、准确的看出各个分类的变化趋势和幅度,需要反复在4个饼图之间比较和判断,如果变化幅度不大,很容易造成误读。所以同样是想表示占比,这种情况使用饼图就不是很有效的图表形式。


充分了解每种图表类型的特征,针对于实际的使用场景,判定其数据关系,结合场景判定图和图表类型选择指南,从而有效的传递数据信息,让你的数据更加直白,make sense!


640?wx_fmt=png

640?wx_fmt=png

福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg


推荐阅读:


640?wx_fmt=png 真香,朕在看了!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据可视化图表,你选对了吗? 的相关文章

  • linux find 输出文件目录名称到txt文件(yolo图片名称)

    利用find命令得到文件夹内文件名称 find 文件夹路径 name jpg gt txt文件名 输出结果
  • python入门基础

    作者介绍 作者 小刘在C站 每天分享课堂笔记 一起努力 共赴美好人生 夕阳下 在最美的绽放 目录 一 python是什么 二 为什么使用python 1 软件质量 2 提高开发者的效率 3 程序的可移植性 4 标准库的支持 5 组件集成 6
  • Anaconda3如何安装keras

    当下机器学习很火 机器学习编程最流行的就是python语言 yangqiang200608打算自学机器学习 于是与python有了缘 对于初学者来说 配置环境是最让人头痛的事情 一周前参照网上的资料折腾一番 终于安装上了python3 为了
  • 1696:逆波兰表达式——递归(atof)

    描述 逆波兰表达式是一种把运算符前置的算术表达式 例如普通的表达式2 3的逆波兰表示法为 2 3 逆波兰表达式的优点是运算符之间不必有优先级关系 也不必用括号改变运算次序 例如 2 3 4的逆波兰表示法为 2 3 4 本题求解逆波兰表达式的
  • SLAM 轨迹评估工具——EVO安装、使用介绍

    一 概述 evo是一款用于视觉里程计和SLAM问题的轨迹评估工具 核心功能是能够绘制相机的轨迹 或评估轨迹与真值之间的误差 支持多种数据集的轨迹格式 TUM KITTI EuRoC MAV ROS的bag 同时支持这些数据格式之间的相互转换
  • Unsupported character encoding ‘UTF‐8‘

    1 无法识别utf 8 2 在保证链接与mysql链接驱动包都正确时 查看数据库编码 右键编辑数据库即可查看 发现是由于数据库字符集不为utf 8 所以把链接信息的指定utf 8删除即可
  • Android工程师学习路线

    Android工程师学习路线 1 第一行代码 2 Android编程权威指南 3 Android群英传 神兵利器 4 Android开发艺术探索 5 Android项目开发实战 6 Android源码设计模式解析与实战 7 App研发路 相
  • Python 数据分析与数据可视化(一)Python 开发环境搭建与编码规范

    文章目录 1 Python 开发环境搭建与编码规范 1 1 Python 开发环境搭建与使用 1 1 1 Python 语言的特点 1 1 2 Python 开发环境 1 1 3 安装扩展库 1 2 Python 编码规范 1 2 1 缩进
  • Maya模型导入到Unity3d 的秘诀

    看过不少文章谈论这个问题 各种复杂操作 简直想让你 Abandon 到最后还不是再Unity中一个个加材质 解决方案 大家应该都留意到了 Maya自从2016版本开始 有一个功能叫 发送到Unity 发送到UE 第一步 再Maya 中正确打
  • Python修饰符 (一)—— 函数修饰符 “@”

    今天被问到Python函数修饰符 顺手写写 Python函数修饰符 与其说是修饰函数倒不如说是引用 调用它修饰的函数 举个栗子 下面的一段代码 里面两个函数 没有被调用 也会有输出结果 def test f print before f p
  • 分类统计的controller和service

    SpringMVC框架下的 部分代码 Controller控制器 Resource ReviewTitleService reviewTitleService 调用ReviewTitleService 类时 先定义一个对象 Gson gso
  • 构筑无所不在计算的基础 —TRON技术体系结构

    本文转载至 http www zlgmcu com philips ARMStud T Kernel TRON T Kernel pdf 东京大学教授 日本泛在网络计算环境研究所所长 坂村健 日本泛在网络计算环境研究所中国室室长 梁 青 一
  • [MFC]对CString::GetBufferSetLength方法的探究,需要ReleaseBuffer,GetLength才正确!

    在使用CString的GetBufferSetLength方法时 遇到了一个问题 代码如下 CString path GetCurrentDirectory MAX PATH path GetBufferSetLength MAX PATH
  • 矩阵乘法与应用

    矩阵乘法 在数学中 一个矩阵说穿了就是一个二维数组 一个n行m列的矩阵可以乘以一个m行p列的矩阵 得到的结果是一个n行p列的矩阵 其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应相乘后所有m个乘积的
  • python王者归来 pdf_OpenStack开源云:王者归来 PDF 下载

    资料目录 第1篇 基 础 篇 第1章 OpenStack概述 1 1 云计算简介 1 1 1 什么是云计算 1 1 2 什么是云存储 1 1 3 私有云与公有云 1 2 为什么使用云计算 1 2 1 方案1 简单的服务部署 1 2 2 方案
  • des加密算法c语言源码,des加密算法c语言源代码(11页)-原创力文档

    include int IP 64 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 3
  • Android-黑客技术-实现类似电脑版软件破解版

    首先先看看什么叫做Android的黑客技术效果 游戏 修改正版apk代码 实现破解免支付买道具 应用 修改添加自己的信息 和应用市场应用看起来一样 最近趁着清闲 学了段时间的Android逆向技术 发现了新世界 所以现在就算手机app也是可
  • jQuery实现省市联动

    一 需求 当点击一个选择框类的省份时 另一个选择框自动出现该省份的城市 使用jQuery实现 二 代码
  • 详细:git提交忽略已提交,未提交文件

    目录 目录 和同事都要忽略的文件 未提交到git远程仓库的文件 已提交到git远程仓库的文件 仅在自己本地忽略 不进行忽略但区分提交文件 和同事都要忽略的文件 未提交到git远程仓库的文件 直接添加到 gitignore 1 vim git
  • QT5通过按键选择打开电脑文件夹里文件

    QT5 通过按键打开本地文件 适用小白 1 功能描述 按键按下转到打开文件夹界面 2 详细步骤 新建一个名叫test项目 1 设计UI界面 在UI界面加入一个pushbutton 例如pushbutton的名字是pushBotton 7 方

随机推荐

  • linux 加密可逆,RSA加密是可逆的吗

    java rsa加密可逆吗可逆 有秘钥就成 linux上RSA加密每次都变化吗 加密解密的技术 对称加密 加密方和解密方使用是同一个密钥 加密解密的速度都很快 先将数据明文 分成数据块儿 一般来讲是大小相同的 如果到最后剩下的不能与其他数据
  • Windows下安装MySQL数据库(从完全卸载到安装使用图文详细步骤,附安装包)

    目录 友情提醒 第一章 如何完全卸载干净mysql教程 三个步骤完全卸载 1 步骤一 卸载程序 2 步骤二 删除文件 3 步骤三 删除注册表信息 第二章 下载软件两种方式 1 第一种方式 去官网下载 2 第二种方式 我的百度网盘下载 第三章
  • EduCoder_web实训作业--JavaScript学习手册十六:浏览器对象模型

    第一关 请在此处编写代码 Begin timeId window setTimeout timerTask 2000 End 第二关 请在此处编写代码 Begin window clearInterval timeId1 End 第三关 请
  • Java面试八股文宝典:序言

    序言 Java作为一门广泛应用于企业级应用开发的编程语言 一直以来都是技术面试中的重要话题 无论您是刚刚踏入编程世界的新手 还是经验丰富的Java开发工程师 都需要通过面试来展示自己的技能和知识 在面试中 除了技术知识 还需要展现出解决问题
  • 深度学习-图像物体检测模型发展总结

    转自 https github com hoya012 deep learning object detection
  • 一位年薪50W的测试被开除,回怼的一番话,令人沉思

    一位年薪35W测试工程师被开除回怼道 反正我有技术 在哪不一样 一技傍身 万事不愁 当我们掌握了一技之长后 在职场上说话就硬气了许多 不用担心被炒 反过来还可以炒了老板 这一点在码农界特别明显 许多测试人在辞职时 都有一种心态 烂公司 烂领
  • 用Python制作我的核酸检测日历

    用Python制作一份核酸检测日历 和大家一样 我是一个遵纪守法的好公民 一直按照居住地的防疫政策 按要求完成核酸检测 我的坐标是深圳 2022年以来 大部分时候要求24小时 少部分时候要求48小时 更少的时候要求72小时 没有更长的情况
  • Mac IDEA解决Maven项目命令行报错:command not found: mvn

    IDEA项目的maven包位置在 Applications IntelliJ IDEA app Contents plugins maven lib maven3 所以运行 步骤一 添加环境变量 我的环境变量在zshrc文件下 大家也可以修
  • VS code配置python虚拟环境

    点击右下角 选择需要的解释器
  • 深度学习模型训练问题(长久更新!!!)

    1 OSError WinError 1455 页面文件太小 无法完成操作 问题解决方法 寻找train代码中的num work设置部分 设置变量default 0 2 RuntimeError Failed to process stri
  • 在 Simscape Electrical 中对两区 MVDC 电动船的建模和仿真(Simulink实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Simulink实现 1 概述 在Simscape Electrical中
  • hdoj1007

    由于这道题数据的特点 按照x排序会莫名其妙的TLE 按y排序就好了 也不需要什么辅助数组 一个p数组足矣 546ms AC 按照数组已经排序好的特点 如果从左边取一个点 它和右边取的一个点的y差值大于min d 就不需要继续从右边取点了 因
  • day29

    目录 01 反馈 02 回顾 03 并发访问MySQL 问题概述 并发访问的问题 04 并发访问MySQL 问题演示 05 并发访问MySQL read committed解决脏读问题 06 并发访问MySQL repeatable rea
  • 高并发解决方案相关面试题

    什么是DNS解析域名 DNS域名解析就是讲域名转化为不需要显示端口 二级域名的端口一般为80 的IP地址 域名解析的一般先去本地环境的host文件读取配置 解析成对应的IP地址 根据IP地址访问对应的服务器 若host文件未配置 则会去网络
  • C# 设置窗体自适应屏幕分辨率

  • 把Spring Boot项目打为可执行jar包

    前言 这两天没太多事了 就去学了一下后端的内容 发现只要有基础了 学其他的还是挺快的 本篇解决的是SpringBoot打成可执行的jar包 在网上找别人直接用命令 可是我这边显示错误 于是就自己查了查 记录一下 步骤 使用IDEA 一 使用
  • ValueError: check_hostname requires server_hostname解决方法

    问题描述 使用cookies登录twitter 由于科学上网的原因 电脑开了代理 会出现这个错误 尝试的解决方法 关闭代理 不能科学上网 pass 添加proxy proxy https http 8 88 888 8 8888 报另一个错
  • 自动化平台搭建之代码结构总览

    自动化框架总体工程结构 之前写了一篇 自动化平台搭建之定制log系统 确切说是还没写完 由于自己能力有限 自底向上进行搭建框架时很容易陷入到一个模块的详细实现中 所以尝试锻炼一下自顶向下的思维方式 先把整个框架搭起来 然后再对每个模块的具体
  • python调整对齐的快捷键

    选中对应的行 1 快捷键组合为ctrl键和 键 ctrl 或者 2 快捷键组合为ctrl键和 键 ctrl
  • 数据可视化图表,你选对了吗?

    戳蓝字 CSDN云计算 关注我们哦 Photo by Jason Coudriet on Unsplash 文 邻川 来源 阿里巴巴中间件 程序员懂画图 一宝变三宝 继上期 阿里程序员小技巧 中 阿里巴巴技术专家三画分享了他关于 如何画好架