常用图形

散点图

image

散点图用来表征两个(如果多个就分面,如上图)数值型变量间的关系,每个点的位置(即x轴和y轴坐标)映射着两个变量的值。当然对于三个数值型变量,也有三维散点图,不过用得不多。

气泡图

image

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

折线图

image

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

面积图

image

面积图

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

柱状图

image

柱状图是一种用得很广泛的图形,它表征分类型变量 vs 数值型变量的关系。如果分类型变量的每一个取值还能继续分类,那么简单的柱状图就变成了复杂的柱状图,每一个类别仅由一根柱变成多根柱,多根柱可以串列,也可以并列。

值得一提的是,柱状图一般需要排序:如果分类型变量是有序的,按照它本身的顺序排列即可;如果分类型变量无序,那么则根据数值型变量的大小进行排序,使柱状图的高度单调变化。(排序的宗旨是直观的表达出想展示的规律)

条形图

image

条形图

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

南丁格尔玫瑰图

image

玫瑰图

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

瀑布图

image

瀑布图

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

饼图

image

饼图

饼图的本质仍是柱状图,只不过饼图一般用来表示各个类别的比例,而不是绝对的数值,用角度来映射大小。

值得一提的是,因为一个圆饼只有360度,如果类别太多了,这个饼会被切割得非常细,不利于阅读;这种情况下老老实实地用柱状图。

圆环图

image

圆环图

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

sunburst chart

image

sunburst chart

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

马赛克图

image

马赛克图

马赛克图比较复杂,与柱状图相比,它的分类变量就多了几个,而且还能实现交叉映射,所以比柱状图更抽象,更细化。

马赛克图隐含着大量的数据信息。例如:(1)从船员到头等舱,存活率陡然提高;(2)大部分孩子都处在三等舱和二等舱中;(3)在头等舱中的大部分女性都存活了下来,而三等舱中仅有一半女性存活;(4)船员中女性很少,导致该组的Survived标签重叠(图底部的No和Yes)。继续观察,你将发现更多有趣的信息。关注矩形的相对宽度和高度,你还能发现那晚其他什么秘密吗?

扩展的马赛克图添加了颜色和阴影来表示拟合模型的残差值。在本例中,蓝色阴影表明,在假定生存率与船舱等级、性别和年龄层无关的条件下,该类别下的生存率通常超过预期值。红色阴影则含义相反。一定要运行该例子的代码,这样你可以真实感受下着色图形的效果。图形表明,在模型的独立条件下,头等舱女性存活数和男性船员死亡数超过模型预期值。如果存活数与船舱等级、性别和年龄层独立,三等舱男性的存活数比模型预期值低。尝试运行example(mosaic),可以了解更多马赛克图的细节。

直方图

image

直方图

直方图看起来跟柱状图很像,但其实本质并不一样 (这一点需要注意)。直方图用来表征一个数值型变量的分布,具体来说就是把这个连续型变量划分成多个区间,然后统计各个区间的频数。直方图横轴是数值型变量本身的值,纵轴是频数。

概率密度曲线图

image

概率密度曲线图

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

雷达图

image

雷达图

很多游戏中的人物能力极向对比就是以雷达图表示的。柱状图一般是一个分类型变量不同类别间的比较,雷达图可以是多个数值不在同一个scale之下;更具体地说,柱状图一般是横向比较,雷达图既可以多个观测之间的纵向比较,也可以是一个观测在不同变量间的横向比较。

值得一提的是,雷达图如果用来横向比较,需先把各个数值变量作归一化处理。

箱线图

image

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

小提琴图

image

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

热力图

image

热力图一般以颜色来映射密度或者其他数值变量,一般来说,颜色最深的地方表示数据最集中。(比较常用,对于热图的解释还需要看图例的含义)

日历图

image

日历图

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

地图

image

地图

地图用来可视化地理数据,这些数据一般由国家地理测绘部门提供,在一些网站上也能找到,常用的数据格式有shp、JSON、csv等。

地图的绘制原理是基于大量的散点,勾勒成曲线,再连接成多边形——其中每一块多代形代表一个地区,可以是国家、省、市、区县等。

地图的应用主两有种情况:一是如上图一样以颜色填充每一个多边形来映射一个指标,这种情况下地图跟柱状图本质相同,但是多了多边形之间的位置关系;另一种是在地图上叠加散点或者曲线,来表征各个点之间的地理位置。

地球图

image

地球图

地图是二维的,三维的就是地球图。这种图形一般是交互的,也就是说你可以用鼠标实现地球的旋转和缩放等操作。

值得一提的是,不要仅仅为了3D就使用地球图,要看数据本身的情况。如果你的数据范围本来就覆盖全球,用地球图很合适;但如果你的数据范围小,就一个国内,甚至一个省市内的,搞个地球图就太浮夸,而且整个球上只有一个非常小的区域有数据,是很不和谐的。

网络图

image

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

arc diagram

image

arc diagram

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

和弦图

image

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

hierarchical edge bundling

image

hierarchical edge bundling

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

矩形树图

image

矩形树图

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

平行坐标图

image

平行坐标图

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

桑基图

image

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

漏斗图

image

漏斗图

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

仪表盘

image

仪表盘

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

象柱形图

image

象柱形图

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

主题河流图

image

主题河流图

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

词云图

image

词云图即是对词汇的频数进行可视化,一个词越大它出现的次数就越多,一般与文本挖掘配合使用。

在实际的数据可视化中,往往不是孤立地用一个基本图形,把多个图形组合、邻接,能交叉对比出更多的信息。比如在柱状图上叠加折线图,在地图上叠加散点图,把多个柱状图放在一起对比等等。

记住数据可视化展现信息是第一位的,好看倒是其次。

图形语法

看了以上这么多图形,对可视化图形也有了一个感性的认识。现在基于ggplot2粗略地介绍一下图形语法,个人总结,既不全面也不系统;想学习全面的图形语法请去专门学习。

数据(data):数据才是图形的灵魂,这点无需解释。

几何对象(geom):也就是图形本身,这是可视化的外形。根据数据特征,选择最合适的图形。

映射(mapping):映射即使把数据和图形给连接起来。映射什么数据变量,它是连续的还是离散的?

标度(scale):这个是从数据中剥离,但是控制数据如何映射到图形上的属性。图形中用什么通道来映射?常用的有颜色、长度、面积、形状、透明度等通道。

坐标系(coord):坐标系不一定非得是直角笛卡尔坐标系,比如对于地图并不适合,所以要做专门的投影操作。转换坐标系也有造成不同的视觉效果,比如把柱状图的坐标系转换成极坐标系就变成了玫瑰图。

统计变换(stat):对数据进行常规的统计操作,不过也可以先把数据处理好,可视化的时候就不再做变换。

分面(facet):如果图形维度较高,并不是一张图能说明的,那么就分面处理。分面实际上是多加了一个维度,就像一页纸和一页书的区别。

位置(position):一般来说图形各个元素的位置是由数据决定的,不过在不影响分析的前提下为了视觉美观也可以做一些微调。比如有的散点图只看它在y轴的高度,这个时候就可以在x轴上加扰动,没必要很多点都挤在一起。

掌握了图形语法,对理解可视化的本质,构思图形属性很有帮助;只有掌握了图形语法,才能真正自由地去创造数据可视化,而不仅仅只是往模板里套数据。

交互方式

去年在浙大接受可视化培训时,陈为老师(浙大教授,国内数据可视化领域比较权威的学者)提到了一句:交互性是数据可视化与信息图的区别。什么是交互,就是用户输入一个信号,可视化系统能给出响应,以帮助他更好地理解可视化。数据可视化的本质是以简单、直接的图形帮助读者更容易理解数据背后的规律,但许多可视化图形做得太复杂了,反而不利于解读,这个时候交互就能比较有效地解决这个问题。

交互的好处主要有:

节省空间。想想看,如果要把一个月每天的数据都做一张图,难道要做30张图?以交互的方式,让用户自己选择哪一天,然后进行数据筛选、计算、重新画图,1张图就够了。

展现源数据。图形一般是对数据的具象化,所以它一般不展现具体的数字。但是当用户就想了解具体的数字,不必再贴一张表格,把鼠标移到对应的位置就会弹出数据提示框。

引导性强。如果只把一张图扔给用户让他们自己去理解,这样体验太差;配个人在一边讲解成本又太高。交互式可视化系统可以做引导模块,引导用户去探索、理解,也能增加用户的兴趣和成就感。

常用配色

对于一个直男来说,配色方案一直是很苦恼的问题。有条件的话最好找设计师参考,没有的话最简单的方法就是参考比较成功的可视化作品的配色风格。

配色方案没有具体的规律总结,主要靠感觉。下面贴一些配色方案自行体会即可。

image

调色板

image

bootswatch

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

常用工具

数据可视化的工具很多,也有不多人已经总结过,这里就大致提一下。

ggplot2

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

d3.js

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

echarts

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

Excel

随着Excel的发展,它的图表也越来越丰富美观,很容易上手,仍然是把数据往模板里套的方式。推荐 3 个超赞的 EXCEL 插件,让你 5 分钟从小白变大神

PS & AI

这两个是设计师的工具,但是出了一张可视化的图之后往往需要进一步修缮,这就是设计师的工作了。可以生成一张pdf矢量图,然后导入PS或AI中,这样对每一个元素操作都很方便。生物AI插图素材获取和拼装指导 文章用图的修改和排版(2)

DataV

最后友情帮助阿里打个广告。DataV很适合做大屏可视化展示,效果很炫酷,而且模板越来越成熟,上手难度也越来越低,同时价格也不贵。

image

DataV做的大屏展示

思考一个问题:数据可视化到底是否需要编程?对于大数据量、自由度要求较高、创意设计强的可视化应当要编程(特别是前端编程),但是对于日常小规模、简化、通用的可视化,用工具即可。

而且随着数据可视化技术的发展,它的门槛一定是越来越低,越来越不需要编程也能做出很好的可视化效果。

应用场景

大屏展示

这种情况一般是企业级的数据可视化应用,一般是领导向客户展示介绍产品和业务时所用,所以它的难度和工作量也最高。大屏展示要求大气、炫酷、交互性强。

原型分享

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

图文报告

这个是放在报告中或者PPT (你和PPT高手之间,就只差一个iSlide)中展示给别人看的,所以静态图表就行,这个难度最低。报告中的图表要求简洁、清晰、易于解读。

可视化比赛体会

最后谈谈去年参加的阿里云天池公益云图数据可视化创新大赛的体会,有幸能跟很优秀的朋友组队拿了冠军,还能结识阿里官方工作人员以及不少同样优秀的朋友,收获很大。仅从数据可视化本身的角度来说,那场比赛也给了我深刻的体会:

数据可视化本身是表层的东西,可是一款优秀的数据可视化一定要有深刻的内涵。从技术的角度来说,要有大数据整理、数据分析和数据挖掘的智能因子在里面;从背景的角度来说,可视化作品就如同文艺作品一样要源于实际,高于实际,假大空、纯粹只为了炫技的可视化并没有什么意义。

不要只用套路,要有自己的创意和设计。有一些作品只不过纯粹套用一下echarts的模板,除了数据改了一下,其他都没改;这种作品即使能过初赛,也不能过复赛。

数据可视化是为了向别人展示,让别人理解数据背后的背景和内容的,也是整个数据分析的最后一环。所以除了可视化作品本身,演讲也是很重要的,不要张口闭口一堆貌似高大上的技术,那只会适得其反;要讲故事,讲得越通俗、越有趣效果越好。

r语言 wiod_数据可视化基本套路总结相关推荐

  1. R语言时间序列数据可视化: 使用plot函数可视化单序列时间序列数据、多序列时间序列数据并指定不同时间序列的线条类型(lty)

    R语言时间序列数据可视化: 使用plot函数可视化单序列时间序列数据.多序列时间序列数据并指定不同时间序列的线条类型(lty) 目录

  2. R语言ggplot2数据可视化

    R数据科学1_进阶 第一部分 探索 第1章 使用ggplot2进行数据可视化 1.3 图形属性映射 1.4 常见问题 1.5 分面 1.6 几何对象 1.7 统计变换 1.8 位置调整 1.9 坐标系 ...

  3. R语言 类别数据可视化(1)

    目录 一 条形图及其变种 1.简单条形图和帕累托图 (1)条形图 (2)帕累托图 2.并列条形图和堆叠条形图 3.不等宽条形图和脊形图 (1)不等宽条形图 (2)脊形图 二 树状图 1.条形树状图 2 ...

  4. R语言 类别数据可视化(2)

     目录 一 气球图和热图 1.气球图 2.热图 二 南丁格尔玫瑰图 三 金字塔图 四 饼图及其变种 1.饼图 2.扇形图 3.环形图 一 气球图和热图 1.气球图 气球图是用气球大小表示数据的图形,它 ...

  5. R语言配对图可视化:配对图(pair plot)可视化(根据分类变量的值为散点图上的数据点添加颜色和形状、Add color and shape by variables)

    R语言配对图可视化:配对图(pair plot)可视化(根据分类变量的值为散点图上的数据点添加颜色和形状.Add color and shape by variables) 目录

  6. R语言配对图可视化:pivot_longer函数将宽格式的数据重塑为长格式并进行数据全连接和左连接(left join)、配对图可视化(根据分类变量的值为散点图上的数据点添加颜色)

    R语言配对图可视化:pivot_longer函数将宽格式的数据重塑为长格式并进行数据全连接和左连接(left join).配对图可视化(根据分类变量的值为散点图上的数据点添加颜色,Add color ...

  7. R语言进行数据聚合统计(Aggregating transforms)实战:使用R原生方法、data.table、dplyr等方案、计算分组均值并添加到可视化结果中

    R语言进行数据聚合统计(Aggregating transforms)实战:使用R原生方法.data.table.dplyr等方案.计算分组均值并添加到可视化结果中 目录

  8. R语言使用ggplot2可视化堆叠条形图,并在堆叠条形图上显示数据值实战

    R语言使用ggplot2可视化堆叠条形图,并在堆叠条形图上显示数据值实战 目录 R语言使用gg

  9. 【视频】主成分分析PCA降维方法和R语言分析葡萄酒可视化实例|数据分享

    最近我们被客户要求撰写关于主成分分析PCA的研究报告,包括一些图形和统计输出.降维技术之一是主成分分析 (PCA) 算法,该算法将可能相关变量的一组观察值转换为一组线性不相关变量.在本文中,我们将讨论 ...

  10. R语言关联规则及其可视化(Foodmart数据)

    R语言关联规则及其可视化(Foodmart数据) 数据集描述 初步探索 关联规则挖掘 关联规则可视化 商品品类的关联规则 关联规则的评价指标 补充 数据集描述 上周数据挖掘学习了关联规则,今天来练习一 ...

最新文章

  1. webApi前端ajax调用后端返回{“readyState“:0,“status“:0,“statusText“:“error“}解决方案
  2. 总结 @ 在 C# string 中的用法
  3. python脚本批量生成数据
  4. 郑州大学计算机科学复试分数线,2021郑州大学考研复试线发布,计算机大涨,部分热门专业达406分...
  5. DNN、CNN、RNN、LSTM的区别
  6. IntelliJ IDEA 配置JDK
  7. C. Jon Snow and his Favourite Number DP + 注意数值大小
  8. scrapy使用代理报错keyerror: proxy_爬虫Scrapy框架-Crawlspider链接提取器与规则解析器...
  9. ubuntu 修该rm命令使删除文件到回收站
  10. gprs模块http mqtt_在GPRS模块(SIM800C)和STM32芯片上实现MQTT协议 | TsonTec:测量解决方案提供者...
  11. html清除视频缓存,html清除页面缓存
  12. 人工智能发展及其伦理问题思考
  13. 软件默认安装路径C盘(更改办法)
  14. 基于树莓派的语音机器人
  15. java解析xml方法_详解Java解析XML的四种方法
  16. 发现一个大牛Scott Lowe博客
  17. idea 一直不停的updating index
  18. React路由官方网站
  19. Android 完美解决9.0的机型,必须请求GPS权限并打开GPS才可以正确获取到WIFI名称
  20. 以管理为轴心 为IT服务保驾护航——北京赛特百货有限公司

热门文章

  1. Windows内核编程(二)-第一个内核程序
  2. 书店购物车--增删改
  3. 百度宣布服务器硬盘,百度秘密拆空服务器硬盘改用SSD 谷歌与网易有道回应
  4. FlashMX2004组件事件简单调试器
  5. 服务器操作系统修复补丁,最后的更新!微软Windows 7发布KB4534310修复补丁
  6. 采用 Python 机器学习预测足球比赛结果
  7. 3DS更新R4烧录卡内核
  8. 一些常用的ajax框架
  9. 最新delphi7序列号和破解文件
  10. Springboot创建webService接口时的cxfconfi文件报错出现DispatcherServletPath不能找到