数据可视化

数据可视化是关于数据之视觉表现形式的研究;其中,这种数据的视觉表现形式被定义为一种以某种概要形式抽提出来的信息,包括相应信息单位的各类属性和变量(简单来讲,数据可视化就是用图形的方式来表征数据的规律。)前端

首先要明确几点:

  • 数据可视化历来只是表层的东西,数据分析才是核心。就像一我的,不必定长得漂亮人格就高尚,也不必定长得很差看人格就低下。而应该反过来,只有数据分析内涵丰富、价值高,数据可视化才能内容丰富、有价值。
  • 但是这是个看脸的世界,大部分人对于数据也都是外行的,只有把数据可视化作得漂亮才能吸引他们的注意;只有把数据可视化作得简单易懂,他们才能理解数据分析的内涵。
  • 对于数据可视化,最重要的东西历来不是图形、工具、配色这些套路性的东西,而在于创意和灵感。可你又不是参加比赛,并不须要那么多的创意灵感。在平常工做中,仍是以实用为主,因此掌握套路仍是很必要的。

1、经常使用图形

一、散点图

散点图用来表征两个(若是多个就分面,如上图)数值型变量间的关系,每一个点的位置(即x轴和y轴坐标)映射着两个变量的值。固然对于三个数值型变量,也有三维散点图,不过用得很少。
经过观察散点图上数据点的分布状况,咱们能够推断出变量间的相关性。若是变量之间不存在相互关系,那么在散点图上就会表现为随机分布的离散的点,若是存在某种相关性,那么大部分的数据点就会相对密集并以某种趋势呈现。数据的相关关系主要分为:正相关(两个变量值同时增加)、负相关(一个变量值增长另外一个变量值降低)、不相关、线性相关、指数相关等,表如今散点图上的大体分布以下图所示。那些离点集群较远的点咱们称为离群点或者异常点。 编程

气泡图

在散点图的基础上加一个维度,把各个点的面积大小映射一个新的变量,这样不只点的位置还有大小表示数据特征。 服务器

折线图

把散点图各个散点用折线链接起来就成了折线图,固然不只仅只是为了好看,当散点越多,折线就越平滑地趋近于曲线,能更加贴切地反映连续型变量的规律。 网络

面积图

把折线图进一步往坐标轴投影就成了面积图,本质其实跟折线图没区别,只是看起来更加饱满一点。 数据结构

柱状图

柱状图是一种用得很普遍的图形,它表征分类型变量 vs 数值型变量的关系。若是分类型变量的每个取值还能继续分类,那么简单的柱状图就变成了复杂的柱状图,每个类别仅由一根柱变成多根柱,多根柱能够串列,也能够并列。 值得一提的是,柱状图通常须要排序:若是分类型变量是有序的,按照它自己的顺序排列便可;若是分类型变量无序,那么则根据数值型变量的大小进行排序,使柱状图的高度单调变化。 app

条形图

只不过把柱状图坐标旋转一下,竖着的变成横着的,这个可根据版面自由选择。上图示例就是串列的堆叠条形图。 echarts

玫瑰图

本质仍是柱状图,只不过把直角坐标系映射成极坐标系。看起来比柱状图更美观。 工具

瀑布图

瀑布图是柱状图的一种延伸,它通常表示某个指标随时间的涨跌规律,每个柱状也不都是从0开始的,而是从前一个柱状的终点位置开始,这样既反映了每个时刻的涨跌状况,也反映了数值指标在每个时刻的值。 学习

饼图

饼图的本质还是柱状图,只不过饼图通常用来表示各个类别的比例,而不是绝对的数值,用角度来映射大小。 值得一提的是,由于一个圆饼只有360度,若是类别太多了,这个饼会被切割得很是细,不利于阅读;这种状况下老老实实地用柱状图。 大数据

圆环图

本质就是饼图,只不过把实心圆换成了空心的圆环;若是清一色的饼图太过单调,能够考虑换个环形图。

马赛克图

马赛克图比较复杂,与柱状图相比,它的分类变量就多了几个,并且还能实现交叉映射,因此比柱状图更抽象,更细化。 马赛克图隐含着大量的数据信息。例如:(1)从船员到头等舱,存活率陡然提升;(2)大部分孩子都处在三等舱和二等舱中;(3)在头等舱中的大部分女性都存活了下来,而三等舱中仅有一半女性存活;(4)船员中女性不多,致使该组的Survived标签重叠(图底部的No和Yes)。 扩展的马赛克图添加了颜色和阴影来表示拟合模型的残差值。在本例中,蓝色阴影代表,在假定生存率与船舱等级、性别和年龄层无关的条件下,该类别下的生存率一般超过预期值。红色阴影则含义相反。必定要运行该例子的代码,这样你能够真实感觉下着色图形的效果。图形代表,在模型的独立条件下,头等舱女性存活数和男性船员死亡数超过模型预期值。若是存活数与船舱等级、性别和年龄层独立,三等舱男性的存活数比模型预期值低。

旭日图

看起来跟饼图比较像,但比饼图更复杂得多。它从中心向外辐射,每辐射一层就细分一层,用来表示多个变量多层之间的比例关系。

直方图

看起来跟柱状图很像,但其实本质并不同。直方图用来表征一个数值型变量的分布,具体来讲就是把这个连续型变量划分红多个区间,而后统计各个区间的频数。直方图横轴是数值型变量自己的值,纵轴是频数。

几率密度曲线图

本质与直方图相似,不过纵轴不是频数而是频率。正如折线图和面积图同样,几率密度曲线图也可自由选择要不要面积投影。这个图太学术了,通常出如今数学教材中(好比正态分布……)。

雷达图

不少游戏中的人物能力极向对比就是以雷达图表示的。柱状图通常是一个分类型变量不一样类别间的比较,雷达图能够是多个数值不在同一个scale之下;更具体地说,柱状图通常是横向比较,雷达图既能够多个观测之间的纵向比较,也能够是一个观测在不一样变量间的横向比较。 值得一提的是,雷达图若是用来横向比较,需先把各个数值变量做归一化处理。

箱线图

亦称盒须图,也是挺学术的一个图。它用来表征各个数值型变量的分布情况,每一条横线表明分位数,盒内部的横线表明中位数,点表明异常值。

小提琴图

本质与直方图同样,都是表征数值型变量的分布,每个小提琴的宽度表明它在该高度处的频率范围。

热力图

通常以颜色来映射密度或者其余数值变量,通常来讲,颜色最深的地方表示数据最集中。

日历图

是热力图的变种,它把每个矩形从新排列成日历的形状,这样能够方便地观察一段时间内每一天的数值特征。

地图

用来可视化地理数据,这些数据通常由国家地理测绘部门提供,在一些网站上也能找到,经常使用的数据格式有shp、JSON、csv等。 地图的绘制原理是基于大量的散点,勾勒成曲线,再链接成多边形——其中每一块多代形表明一个地区,能够是国家、省、市、区县等。 地图的应用主两有种状况:一是如上图同样以颜色填充每个多边形来映射一个指标,这种状况下地图跟柱状图本质相同,可是多了多边形之间的位置关系;另外一种是在地图上叠加散点或者曲线,来表征各个点之间的地理位置。

地球图

地图是二维的,三维的就是地球图。这种图形通常是交互的,也就是说你能够用鼠标实现地球的旋转和缩放等操做。 值得一提的是,不要仅仅为了3D就使用地球图,要看数据自己的状况。若是你的数据范围原本就覆盖全球,用地球图很合适;但若是你的数据范围小,就一个国内,甚至一个省市内的,搞个地球图就太浮夸,并且整个球上只有一个很是小的区域有数据,是很不和谐的。

网络图

网络图的元素包含点和边,边分为无向边、单向边和双向边来表征点与点的链接关系,边的粗细能够映射这种关系的强弱。

arc diagram(圆弧图)

arc diagram也是一种网络图,只不过它把全部的节点一字排开,以弧线来表示边。这样看起来艺术感更强,适合于节点较多的网络关系可视化。

Chord Diagram(和弦图)

和弦图通常用来表示双向的网络关系(好比AB两个城市相互流入流出了多少人),数据结构通常为邻接矩阵。当节点不少的时候,各类弧线交叉得就很是密密麻麻,这种状况下,要么交互,要么考虑别的图形。

hierarchical edge bundling(分层边缘捆绑)

hierarchical edge bundling也表示节点间的网络关系,不过它把边扭曲成曲线,这样就适合节点比较多的可视化。

矩形树图

矩形树图本质就是决策树的可视化,只不过排成矩形。它也是把各个变量层层细分,这一点跟sunburst图相似。当变量比较多的时候,作成交互可缩放的形式更合适。

平行坐标图

平行坐标图的优势是能够把多个变量并形排开,把每个记录都以折线链接上。这样当数据量大的时候,其实能够很方便地观察各个变量的分布状况。

桑基图

桑基图看起来跟平行坐标图有点像,但含义不同。桑基图主要的用法是表征流量在各个层级的流动关系,上一层如何向下一层分散,下一层如何由下一层汇聚。

漏斗图

互联网运营有一个很重要的概念就是层级转化,这个每层的转化率用漏斗图来可视化,形神俱佳。若是两层之间的宽度近似,表征该层的转化率高;若是两层之间的宽度一会儿减少了不少,表示转化率低。

仪表盘

仪表盘的观赏性大于实用性,实际上它的功能很简单,就是表征一个数值型变量在最小值和最大值之间的什么分位。

象柱形图

象柱形图其实就是柱形图,只不过把柱子换成了其它的图形。若是数据自己有比较具体、形象的含义和背景,那么用象柱形图是一种比较新颖的选择。

主题河流图

主题河流图好看,但很差解释,若是不是交互式的,最好不要用。它通常是把多个类别随时间的变化数据堆叠起来,表征随时间变化的趋势。

词云图

词云图便是对词汇的频数进行可视化,一个词越大它出现的次数就越多,通常与文本挖掘配合使用。 在实际的数据可视化中,每每不是孤立地用一个基本图形,把多个图形组合、邻接,能交叉对比出更多的信息。好比在柱状图上叠加折线图,在地图上叠加散点图,把多个柱状图放在一块儿对比等等。 记住数据可视化展示信息是第一位的,好看却是其次。

图形语法总结

  • 数据(data):数据才是图形的灵魂,这点无需解释。
  • 几何对象(geom):也就是图形自己,这是可视化的外形。根据数据特征,选择最合适的图形。
  • 映射(mapping):映射即便把数据和图形给链接起来。映射什么数据变量,它是连续的仍是离散的?
  • 标度(scale):这个是从数据中剥离,可是控制数据如何映射到图形上的属性。图形中用什么通道来映射?经常使用的有颜色、长度、面积、形状、透明度等通道。
  • 坐标系(coord):坐标系不必定非得是直角笛卡尔坐标系,好比对于地图并不适合,因此要作专门的投影操做。转换坐标系也有形成不一样的视觉效果,好比把柱状图的坐标系转换成极坐标系就变成了玫瑰图。
  • 统计变换(stat):对数据进行常规的统计操做,不过也能够先把数据处理好,可视化的时候就再也不作变换。
  • 分面(facet):若是图形维度较高,并非一张图能说明的,那么就分面处理。分面其实是多加了一个维度,就像一页纸和一页书的区别。
  • 位置(position):通常来讲图形各个元素的位置是由数据决定的,不过在不影响分析的前提下为了视觉美观也能够作一些微调。好比有的散点图只看它在y轴的高度,这个时候就能够在x轴上加扰动,不必不少点都挤在一块儿。
    掌握了图形语法,对理解可视化的本质,构思图形属性颇有帮助;只有掌握了图形语法,才能真正自由地去创造数据可视化,而不只仅只是往模板里套数据。

交互方式

交互性是数据可视化与信息图的区别。
什么是交互,就是用户输入一个信号,可视化系统能给出响应,以帮助他更好地理解可视化。数据可视化的本质是以简单、直接的图形帮助读者更容易理解数据背后的规律,但许多可视化图形作得太复杂了,反而不利于解读,这个时候交互就能比较有效地解决这个问题。

交互的好处主要有:

  • 节省空间。想一想看,若是要把一个月天天的数据都作一张图,难道要作30张图?以交互的方式,让用户本身选择哪一天,而后进行数据筛选、计算、从新画图,1张图就够了。
  • 展示源数据。图形通常是对数据的具象化,因此它通常不展示具体的数字。可是当用户就想了解具体的数字,没必要再贴一张表格,把鼠标移到对应的位置就会弹出数据提示框。
  • 引导性强。若是只把一张图扔给用户让他们本身去理解,这样体验太差;配我的在一边讲解成本又过高。交互式可视化系统能够作引导模块,引导用户去探索、理解,也能增长用户的兴趣和成就感。

经常使用配色

调色板

bootswatch 可在bootswatch上参考相关的CSS配色方案。

经常使用工具

ggplot2

R最擅长的除了统计建模就是可视化了,而ggplot2是最流行、最强大的绘图包(应该没有之一)。对于静态图,只要你有足够的创意,ggplot2基本均可以经过其系统完备的画图语法实现。而R中也有相关的包能够把ggplo2图形变成交互式,弥补了ggplot2自己不能交互的弱点。

d3.js

d3.js个很强大的库,许多先进、前卫的图形在上面都有demo,它能够在较底层以较高的自由度画图并配置交互效果。可是它的学习曲线很陡,坑也较多。

echarts

echarts在江湖上被称为”百度为数很少的良心产品“,这个库跟d3相反,它离应用层更近,提供了许多示例模板,把代码copy过去改改数据就好了。因此echarts的优势是上手容易、图表漂亮、交互式效果也很好,缺点是自由度低,一旦你有个创意echarts没提供对应的模板,那就没办法了。

Excel

随着Excel的发展,它的图表也愈来愈丰富美观,很容易上手,仍然是把数据往模板里套的方式。

PS & AI

这两个是设计师的工具,可是出了一张可视化的图以后每每须要进一步修缮,这就是设计师的工做了。能够生成一张pdf矢量图,而后导入PS或AI中,这样对每个元素操做都很方便。

DataV

DataV很适合作大屏可视化展现,效果很炫酷,并且模板愈来愈成熟,上手难度也愈来愈低,同时价格也不贵。 DataV作的大屏展现

思考一个问题:数据可视化究竟是否须要编程?
对于大数据量、自由度要求较高、创意设计强的可视化应当要编程(特别是前端编程),可是对于平常小规模、简化、通用的可视化,用工具便可。 并且随着数据可视化技术的发展,它的门槛必定是愈来愈低,愈来愈不须要编程也能作出很好的可视化效果。

应用场景

大屏展现

这种状况通常是企业级的数据可视化应用,通常是领导向客户展现介绍产品和业务时所用,因此它的难度和工做量也最高。大屏展现要求大气、炫酷、交互性强。

原型分享

好比用R中的shiny快速搭建一个可视化原型,而后在公司内部搭建一个内网服务器部署上去,内部同事均可以交互使用,很方便地了解产品原型及数据规律。这种状况下没必要太花哨,可是要具体、清晰,还有要必定的交互性。

图文报告

这个是放在报告中或者PPT中展现给别人看的,因此静态图表就行,这个难度最低。报告中的图表要求简洁、清晰、易于解读。

  • 数据可视化自己是表层的东西,但是一款优秀的数据可视化必定要有深入的内涵。从技术的角度来讲,要有大数据整理、数据分析和数据挖掘的智能因子在里面;从背景的角度来讲,可视化做品就如同文艺做品同样要源于实际,高于实际,假大空、纯粹只为了炫技的可视化并无什么意义。
  • 不要只用套路,要有本身的创意和设计。有一些做品只不过纯粹套用一下echarts的模板,除了数据改了一下,其余都没改;这种做品即便能过初赛,也不能过复赛。
  • 数据可视化是为了向别人展现,让别人理解数据背后的背景和内容的,也是整个数据分析的最后一环。因此除了可视化做品自己,演讲也是很重要的,不要张口闭口一堆貌似高大上的技术,那只会拔苗助长;要讲故事,讲得越通俗、越有趣效果越好。
相关文章
相关标签/搜索