大家都回答的是工具产品,似乎都没有人讲讲R语言和Python,怒答。
-------------------------------------------多图预警!
R-ggplot2
ggplot2是R语言最为强大的作图软件包,强于其自成一派的数据可视化理念。当熟悉了ggplot2的基本套路后,数据可视化工作将变得非常轻松而有条理。
技术相关
核心理念
1. 将数据,数据相关绘图,数据无关绘图分离
这点可以说是ggplot2最为吸引人的一点。众所周知,数据可视化就是将我们从数据中探索的信息与图形要素对应起来的过程。
ggplot2将数据,数据到图形要素的映射,以及和数据无关的图形要素绘制分离,有点类似java的MVC框架思想。这让ggplot2的使用者能清楚分明的感受到一张数据分析图真正的组成部分,有针对性的进行开发,调整。
2. 图层式的开发逻辑
在ggplot2中,图形的绘制是一个个图层添加上去的。举个例子来说,我们首先决定探索一下身高与体重之间的关系;然后画了一个简单的散点图;然后决定最好区分性别,图中点的色彩对应于不同的性别;然后决定最好区分地区,拆成东中西三幅小图;最后决定加入回归直线,直观地看出趋势。这是一个层层推进的结构过程,在每一个推进中,都有额外的信息被加入进来。在使用ggplot2的过程中,上述的每一步都是一个图层,并能够叠加到上一步并可视化展示出来。
3. 各种图形要素的自由组合
由于ggplot2的图层式开发逻辑,我们可以自由组合各种图形要素,充分自由发挥想象力
基本开发步骤
1. 初始化 – ggplot()
这一步需要设定的是图的x轴,y轴和”美学特征”。基本形式如下:
p <- ggplot(data = , aes(x = , y = ))
这一步里,设置x轴和设置y轴很好理解。那么”美学特征”又是什么呢?
举个例子来说,下面这张散点图里,x轴表示年龄,y轴表示身高,很好理解:
但这张图除了展示年龄和身高的关系,还展示出每个样本点的体重:颜色越深表示体重越大。因此体重信息和年龄身高一样,也需要绑定到一个具体的列。这一列就是散点图中的”美学特征”。
来看看R语言绘制代码:
ggplot(heightweight, aes(x=ageYear, y=heightIn, colour=weightLb))+geom_point()
其中的colour参数就是该图的”美学特征”。
再比如,下面这张柱状图中,x轴表示日期,y轴表示权重,很好理解:
但这张图中每个日期对应了两个不同的权重并采用两个柱状来对比,那么这个划分依据也是另一个“美学特征”。
再看看绘制代码:
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar))+geom_bar(position="dodge", stat="identity")
其中的fill参数就是该图的”美学特征”。
综上所述,图中的每个样本点除了通过它的坐标位置,还可以以其他形式展示信息,比如大小,色深,分组等。而这些新形式需要绑定的列,便叫做”美学特征”。
“美学特征”的形式和x,y轴一样是以列的形式给出,且列中元素个数和x,y轴列必然相等。它的设置也和x,y轴一样在ggplot()函数的aes参数括号内进行。
2. 绘制图层 – geom_bar()/geom_line()等等
上一步的主要工作是为数据可视化配置好了数据,接下来便可根据业务的需要来绘制不同的图,如折线图/柱状图/散点图等等。具体的实现方法在后面的章节中会细致讲解,这里重点提一下绘图函数里的stat参数。这个参数是对冲突样本点做统计,该参数默认为identity,表示保留样本点原(y)值,还可以是sum,表示对出现在这点的(y)值进行求和等等。
3. 调整数据相关图形元素 – scale系列函数、某些专有函数
在ggplot2中,scale标尺机制专门负责完成数据到图像元素的映射。也许你会问,”美学特征”不是已经定义好了这个映射吗?然而事实是”美学特征”只是选定了映射前的数据,并没有说明具体映射到什么图形元素。
举个例子,假如某张表记录了不同种类水池的长,宽,深信息。现在需要绘制不同种类下水池长和宽关系的柱状图,那么初始化完成的是这个映射:
而scale函数完成的是这个映射:
显然a映射为了红色,b映射为了蓝色。
也许你还会问,我的代码不用scale,那么映射是如何完成的呢?答曰系统有默认映射的,就像绘图函数都有默认参数stat=identity这样。
4. 调整数据无关图形元素 – theme()、某些专有函数
这部分包括设置图片标题格式,文字字体这类和数据本身无关的图像元素。只需调用theme()函数或者某些专有函数(如annovate函数可为图片添加注释)便可实现。
一个图层绘制好后便可观察调整,然后开始下一个图层的制作,直到整幅图绘制完毕。
R语言可视化成品图
Python不是很在行,先放一放
------------------------------------------------------------------------------------------
补充:
FineBI是为大数据量提供数据处理、ETL、Dashboard报表展示、动态分析、报表管理的可视化分析工具。
优势是:
前端可视化
一、数据分析的操作思路
数据分析通常是这样切入的,比方说业务上发生了变化,流量下降20%,那么我们就要分析可能的原因,需要多方数据去验证假设。又或者拿到一份数据,思考可以分析的规律点。无论哪种情况,一个完整的数据分析都需要经历数据获取、数据预处理、数据分析与建模、可视化分析及报告撰写的过程。
FineBI这个BI工具的功能模块也是依据分析的流程来设计的,分为数据连接、数据准备、可视化分析、仪表板驾驶舱、分享仪表板等。
二、认识这个工具——FineBI的工作区
官网安装好合适的版本,成功激活,设置初始账号密码后,会跳转到这个web页面。
左侧是导航栏,类似于菜单栏。目录类似首页,展现已完成的分析报告,这里默认展现官方的内置demo。
数据准备是连接数据、准备数据,以及对数据进行再加工处理的地方,可进行业务包、数据表、关联、多路径、数据更新、自助数据集等管理。
仪表板即创建可视化分析。管理系统即对整个数据决策系统进行管理的地方,包括目录的设置、外观设置、数据、报表、分享权限等管理配置。
创建是提供给用户快捷新建数据连接、添加数据库表、添加SQL数据集、添加EXCEL数据集、添加自助数据集、新建仪表板的地方。
三、连接/导入数据
制作数据报告,第一步是导入数据,FineBI能从很多种数据源导入数据:如Excel,CSV,XML,以及各类数据库(SQL Server,Oracle,My SQL等),两大主流开源平台(Hadoop,Spark)等等。最常用的方式是连接数据库和导入excel数据。两种方式因为最常用,所以这里都演示操作一遍。
1、数据库连接举例:连接mysql
2、导入excel数据
同样的数据,用一份excel导入。
第一步:数据准备—添加业务包,业务包是用来统一整理数据表的。这里创建一个台风数据包。点击添加表,新建excel数据集。
就得到如下的数据明细。这里可以自动识别数据的字段类型,也可以修改字段类型。(举例:有些情况下将时间识别成文本类型,需要手动切换成时间类型,不然会影响后续操作)
至此,数据就导入成功。
四、数据塑性—自助数据集
自助数据集其实是数据加工的环节。一般我们拿到的数据往往是有空缺值有重复,所谓脏数据,脏数据需要清理,关于数据清洗的处理可以写5000字篇,这里就不多讲了。更常见的情况是分析中需要新建一些字段,这是源数据所没有的。这时候就可以根据需求对原数据进行再加工处理,新建一个用于分析的数据集。再处理的操作包括:选择字段、过滤、分组汇总、新增列、字段设置、排序、左右合并、上下合并、挖掘。
这里因为分析的比较简单,且原始数据已经很规范,所以暂时还不需要对源数据表进行这些操作,且一些过滤操作可以放到后面创建分析图表的过程中去做。
其实,在自助数据集之前,有个功能没讲到。FineBI有个管理员的说法,这在企业部署中会涉及。管理员可以给不用人分配不同权限下的数据,比如财务的只能看财务和销售的数据,或者一部分财务人员只能看到特定的业务包里的数据,或者部分数据表,这些都是出于数据安全以及流程管理考虑。在管理员准备好数据后,就可以分配给不同人员账号,以及部分权限的数据。如果是个人使用,比如本文所要介绍的分析,BI系统是部署在自己本地的,那自己就是管理员,拥有最高权限。本文的分析暂时不需要用到权限功能,这里只做简单介绍。
五、可视化分析
到这里数据准备好了,接下来开始正式分析。
先来观察这份数据,这份数据是我从网上当下来的,展示了1945年——2015年登陆我国的台风信息,包括时间、登陆省市以及台风强度。
那么我们可以汇总统计下历年来台风最常光顾的省份和城市有哪些,一年中哪个时间段是台风频发日,以及台风强度分布。
1、 新建仪表板,即我们说的可视化报告、dashboard,叫法很多。
2、 新建可视化组件,添加刚刚导入的数据集。(图表、查询筛选框等都叫组件,是finebi仪表板的组成元素。)
分析1:各年度登陆我国的台风数量
添加完数据集会进入到这个分析界面。拖拽要分析的字段(记录数—统计台风数量的指标,登陆时间——这里只展示年份这个维度)
这里要注意,源数据表中一个台风有多行记录,那是因为台风可能同时登陆两个区域,记录了两条信息,所以记录数要依赖CMA编号统计(记录数右侧小三角下拉),以免重复。
其次,这里又添加了一个统计每年台风平均数的指标。
最后再对次图表稍加美化,通常在图形属性和组件样式中:
① 修改线条颜色:图形属性—颜色
② 修改连线为平滑曲线,并且可调整有无标记点
③ 修改该组件标题:组件样式—标题,可调整字体样式
最终得到如下成图:
能明显感觉到登陆我国的台风呈现一个2~4年的波动变化,且2000年以来,直击我国的台风整体数量有略微下降。
分析2:台风登陆各省沿海城市分布—数据地图
这里演示一下数据地图的制作,用地图直观展现台风登陆我国沿海各省市的分布。
必须将维度创建成地图角色,生成经纬度。
匹配好数据后生成省份(经度)、省份(纬度)字段。这里要注意检查一些匹配是否正确,我就遇到把辽宁省匹配成宁夏的bug,匹配有问题可以随时调整。
然后将字段分别拖至横轴和纵轴,会自动生成一个填充地图。除此之外还有点地图、热力地图等,这里就用填充地图举例。
填充地图顾名思义,就是用区域的颜色区分数值大小。这里将记录数拖拽到图形属性-颜色,即可看到区分,(颜色可在下拉框中自行选取)。再将记录数拖拽到标签,即可显示登陆该省市的台风数量。
在组件样式——背景中,可以修改GIS地图样式,如下:
注:关于图表组件的样式,比如标题名(字体大小颜色)、轴线、配色,图表布局等都可在图形属性和组件样式中选择。选项非常多,请读者们自行发挥自己的美学天赋吧!关于数值的计算、过滤排序等操作,都可在横轴、纵轴的指标维度下拉框中找到。
六、可视化报告
其他分析大同小异,篇幅有限,以上只举了两个例子。
图表分析组件完成之后,就是构建可视化报告(dashboard)了。
仪表盘样式中有预设的模板可以直接套用,以下是笔者随便套用的一个模板,更具模板的风格,后面调整了每个图表的样式和配色。好不好看全看个人审美了。