php数值怎么相加的,excel表格透视表怎么做?
如果只能学Excel中的一项功能,这项功能就是数据透视表,可见数据透视表在Excel中的地位。
数据透视表可以使用户通过简单的拖拽操作,完成复杂的数据分类汇总,可以说是Excel中最实用、最常用的功能,没有之一。
今天星爷带你见识数据透视表的十八般武艺,零基础让你轻松入门数据透视表。
001 基本操作NO.1 创建数据透视表
使用原始数据表进行各销售员对应各产品的销量。
根据你想要呈现的数据报表,透视一下,让你轻松“拖”出来。
看到没?
数据透视表的学习成本非常低,通过简单的拖拽就能完成数据的分类汇总。
很多新手学习数据透视表时会搞不懂字段、区域、筛选、行、列……等等这些乱七八糟的名词之间的关系。
我用一张图告诉你字段在各区域之间的对应关系。
数据透视表字段与区域之间的关系
NO.2 更改数据源
数据透视表的一个优势就是,数据源变更后进行简单的更新就可反映到数据报表中。有两种方式,第一种是数据透视表刷新:如果只是数据源中的数值进行了更新,采用刷新即可。
刷新数据透视表源数据
如果是数据源的结构或布局变更了,这时采用更改数据源的方式。
NO.3 插入计算字段
计算字段极大扩展了数据透视表的计算功能,属于神一般的存在。比如原始数据表中有一列数据为目标值,有一列数据为实际值,那么在数据透视表中可以通过计算字段输入公式=实际值/目标值,来求出汇总的达成率。
NO.4 使用切片器
这是制作动态图表的利器。
002 布局与格式调整NO.5 更改值汇总依据
【值】区域是数据透视表的核心部分,通过数据透视表提供的强大数据计算功能,可以使用多种汇总方式和值显示方式来计算值字段数据。
值汇总依据,就是你要用数据透视表对原始数据中的数值进行怎样的计算,比如求和、计数还是求平均值。
NO.6 更改值显示方式
数据透视表不仅可以按照不同的方式汇总数据,它还可以按照不同的方式显示数据,从而更清晰的看出数据之间的关系和逻辑。
①总计的百分比
总计百分比含义是:每一项分类汇总的值占总计的百分比。
各项之和为100%
②父级百分比
总计的百分比关注的是个体占整体的情况,往往只有一个维度,除此之外,还可以展示局部百分比,比如求出每个销售员在各地区的销售额占比。
各小组里的项之和为100%
在Excel 2016中,数据透视表中共有14种“值显示方式”。
NO.7 更改数据透视表布局
默认生成的数据透视表布局比较呆板,有多个方面可以设置不同形式的布局。
003 数据透视表组合功能数据透视表中有一个叫做“组合”的功能,一方面它能自动识别日期、数值等可计算的字段,然后按照给定的跨度进行组合,比如组合出按年、季度、月、日,甚至小时、分……的汇总;另一方面,也可通过手动选择的方式,将文本格式的数据按照自定义的方式进行组合,比如组合出一线城市、二线城市等等。
通过分组功能将这些不同数据类型的数据项按多种组合方式进行分组,大大增强了数据表分类汇总的延伸性,方便用户提取满足特定需求的数据子集。
NO.8 按时间维度组合
本图来自网络
NO.9 按数值组合
本图来自网络
时间维度和数值维度的组合,逻辑上都是一样的,都是基于大小进行分组组合,这两者可以成为自动组合,数据透视表还允许对文本类型进行自定义组合。
NO.10 自定义组合
还有一种组合方式叫作自定义组合,比如要组合的对象是文本字段,或者对日期进行非等距的组合。
比如:一线城市和二线城市销售情况分析
按住Ctrl键选择北京、广州、上海、深圳四个城市,然后点击“鼠标右键”选择“创建组”。接着,选中剩下的所有城市,点击“鼠标右键”→选择“创建组”,数据透视表按照我们所选定的内容进行组合。
通过这十个技巧,你掌握数据透视表了么?
关注「精进Excel」,如果任意点开三篇文章,没有你想要的知识,算我耍流氓!鸿蒙系统用什么语言?
鸿蒙系统大机率是采用C和C++语言开发的。鸿蒙系统是基于linux内核开发而来,而linux内核的开发语言是C和C++,所以,鸿蒙系统大机率是采用C和C++语言开发的。为什么这么说呢?大家都知道,时下正兴的安卓系统也是基于linux内核,但是它采用的是java语言,所以造成了长期的卡顿现象,在应用体验上,跟苹果的IOS系统有一定的差距。有了这个前车之鉴,鸿蒙系统不可能再采用java来作为基础语言了,所以,C/C++是最大的可能。
鸿蒙系统在响应速度上媲美苹果的IOS系统。苹果手机最能让果粉拿得出手来吹嘘的,也就ISO系统的流畅度了。的确,流畅度体验上,ISO系统比安卓要好得多,这是由它们的内部结构所决定的。安卓系统是由java语言开发的,而java语言不能直接跟linux内核的C语言发生交互,就是说,安卓系统的前端每发出一个指令到linux内核,都必须先通过C语言的虚拟机来翻译一次,然后,指令才到达linux内核。linux内核处理好后,又要通过虚拟机翻译一下,传达给外层的java,再到达前端。这样,就浪费了不少的时间,同时有多个任务指令时,就会出现卡顿的现象。
而鸿蒙系统跟苹果的ISO系统一样,没有采用虚拟机翻译的模式,而是通过C/C++语言让外层的命令一路畅通地抵达linux内核,因为linux内核就是C/C++语言编写的,所以,不需要多余的翻译,linux内核直接就可理解指令的意思。
鸿蒙系统在使用范围上将会超越现在所有的系统。这可不是盲目乐观。据官方介绍,鸿蒙系统是一个“面向未来”的操作系统,是一款基于微内核的面向全场景的分布式操作系统。由于采用的是微内核,对于不同设备就可以弹性部署。鸿蒙系统有三层架构,第一层是微内核,第二层是基础服务,第三层是程序框架 。所以,它几乎可以适配于所有的终端设备:手机、平板、电脑、电视、智能汽车、可穿戴设备等等。现在,还没有哪一款系统有这样强大。
形象点说,我们都知道台式电脑的主板,会集成很多的接口,如:PCI接口、PCI-E接口、显示接口、CPU接口、内存接口、USB接口等等。微内核就跟电脑主板类似,也会集成很多“接口”,在不同的终端设备上使用鸿蒙系统时,会创建不同的需求接口,实现不同的功能。比如:在路由器上使用鸿蒙系统,就不需要“视频、声音、通话”等手机才需要的功能,可以大大降低系统的体量。
鸿蒙系统是开源,所有手机品牌都可使用。2019年8月9日,华为正式发布鸿蒙系统。同时余承东在发布会上也明确表示,鸿蒙OS系统实行开源。这就意味着,所有的手机厂家都可以在自己的手机上使用鸿蒙系统。未来是物联网的时代,而鸿蒙系统就是为物联网而生。也就是说,只要是电子终端产品,理论上都是可以使用鸿蒙系统作为自己的灵魂系统。这样一来,如果所有的终端都使用鸿蒙系统,那将是一个非常庞大的生态体系。
2011年左右,安卓战胜塞班系统,成为最受欢迎的手机系统,成就了如今的安卓帝国。究其最终原因,就在于安卓是开源的免费的,所有的手机厂商都愿意在自己的手机上使用安卓。反观塞班,不开源不免费,想使用就得花钱。2家一比较,谁还愿意使用塞班。
今天,同样的事情又在发生,谷歌开始收回安卓控制权,对第三方开发的要求越来越严。最典型的,就是不让华为使用安卓11,要求所有手机厂商二次开发自己的安卓系统时必须守谷歌规范。此时此刻,每个手机厂家心里都有一杆称,华为的鸿蒙系统开源,正好供他们预备使用。如果鸿蒙正式发布,相信会有众多的手机厂家为未来做准备——二次开发鸿蒙系统为自己的手机使用。
总之,由于鸿蒙系统开发语言是C/C++,在响应速度上肯定优于安卓,而且鸿蒙系统是开源,所以,鸿蒙系统一旦发布,将会如当年的安卓一样,受到众多手机厂家的的追捧——尤其是国产品牌的手机,对于国产系统是如饥似渴。
以上就是我的见解,如有不同观点,欢迎发表评论。
同时,欢迎【点赞、分享、收藏】和【关注】我。
Python爬虫和数据分析需要哪些知识储备?
数据是决策的原材料,高质量的数据价值不菲,如何挖掘原材料成为互联网时代的先驱,掌握信息的源头,就能比别人更快一步。
大数据时代,互联网成为大量信息的载体,机械的复制粘贴不再实用,不仅耗时费力还极易出错,这时爬虫的出现解放了大家的双手,以其高速爬行、定向抓取资源的能力获得了大家的青睐。
爬虫变得越来越流行,不仅因为它能够快速爬取海量的数据,更因为有python这样简单易用的语言使得爬虫能够快速上手。
对于小白来说,爬虫可能是一件非常复杂、技术门槛很高的事情,但掌握正确的方法,在短时间内做到能够爬取主流网站的数据,其实非常容易实现,但建议你从一开始就要有一个具体的目标。
在目标的驱动下,你的学习才会更加精准和高效。那些所有你认为必须的前置知识,都是可以在完成目标的过程中学到的。
基于python爬虫,我们整理了一个完整的学习框架:
筛选和甄别学习哪些知识,在哪里去获取资源是许多初学者共同面临的问题。
接下来,我们将学习框架进行拆解,分别对每个部分进行详细介绍和推荐一些相关资源,告诉你学什么、怎么学、在哪里学。
爬虫简介爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
这个定义看起来很生硬,我们换一种更好理解的解释:
我们作为用户获取网络数据的方式是浏览器提交请求->下载网页代码->解析/渲染成页面;而爬虫的方式是模拟浏览器发送请求->下载网页代码->只提取有用的数据->存放于数据库或文件中。
爬虫与我们的区别是,爬虫程序只提取网页代码中对我们有用的数据,并且爬虫抓取速度快,量级大。
随着数据的规模化,爬虫获取数据的高效性能越来越突出,能够做的事情越来越多:
市场分析:电商分析、商圈分析、一二级市场分析等市场监控:电商、新闻、房源监控等商机发现:招投标情报发现、客户资料发掘、企业客户发现等进行爬虫学习,首先要懂得是网页,那些我们肉眼可见的光鲜亮丽的网页是由HTML、css、javascript等网页源码所支撑起来的。
这些源码被浏览器所识别转换成我们看到的网页,这些源码里面必定存在着很多规律,我们的爬虫就能按照这样的规律来爬取需要的信息。
无规矩不成方圆,Robots协议就是爬虫中的规矩,它告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取。
通常是一个叫作robots.txt的文本文件,放在网站的根目录下。
轻量级爬虫“获取数据——解析数据——存储数据”是爬虫的三部曲,大部分爬虫都是按这样的流程来进行,这其实也是模拟了我们使用浏览器获取网页信息的过程。
1、获取数据
爬虫第一步操作就是模拟浏览器向服务器发送请求,基于python,你不需要了解从数据的实现,HTTP、TCP、IP的网络传输结构,一直到服务器响应和应达的原理,因为python提供了功能齐全的类库来帮我们完成这些请求。
Python自带的标准库urllib2使用的较多,它是python内置的HTTP请求库,如果你只进行基本的爬虫网页抓取,那么urllib2足够用。
Requests的slogen是“Requests is the only Non-GMO HTTP library for Python, safe for humanconsumption”,相对urllib2,requests使用起来确实简洁很多,并且自带json解析器。
如果你需要爬取异步加载的动态网站,可以学习浏览器抓包分析真实请求或者学习Selenium来实现自动化。
对于爬虫来说,在能够爬取到数据地前提下当然是越快越好,显然传统地同步代码不能满足我们对速度地需求。
(ps:据国外数据统计:正常情况下我们请求同一个页面 100次的话,最少也得花费 30秒,但使用异步请求同一个页面 100次的话,只需要要 3秒左右。)
aiohttp是你值得拥有的一个库,aiohttp的异步操作借助于async/await关键字的写法变得更加简洁,架构更加清晰。使用异步请求库进行数据抓取时,会大大提高效率。
你可以根据自己的需求选择合适的请求库,但建议先从python自带的urllib开始,当然,你可以在学习时尝试所有的方式,以便更了解这些库的使用。
推荐请求库资源:
urllib2文档:https://dwz.cn/8hEGdsqDrequests文档 :http://t.cn/8Fq1aXrselenium文档:https://dwz.cn/DlL9j9hfaiohttp文档:https://dwz.cn/hvndbuB42、解析数据
爬虫爬取的是爬取页面指定的部分数据值,而不是整个页面的数据,这时往往需要先进行数据的解析再进行存储。
从web上采集回来的数据的数据类型有很多种,主要有HTML、 javascript、JSON、XML等格式。解析库的使用等价于在HTML中查找需要的信息时时使用正则,能够更加快捷地定位到具体的元素获取相应的信息。Css选择器是一种快速定位元素的方法。Pyqurrey使用lxml解析器进行快速在xml和html文档上操作,它提供了和jQuery类似的语法来解析HTML文档,支持CSS选择器,使用非常方便。
Beautiful Soup是借助网页的结构和属性等特性来解析网页的工具,能自动转换编码。支持Python标准库中的HTML解析器,还支持一些第三方的解析器。
Xpath最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。它提供了超过 100 个内建的函数。这些函数用于字符串值、数值、日期和时间比较、节点和 QName 处理、序列处理、逻辑值等等,并且XQuery和XPointer都构建于XPath基础上。
Re正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。个人认为前端基础比较扎实的,用pyquery是最方便的,beautifulsoup也不错,re速度比较快,但是写正则比较麻烦。当然了,既然用python,肯定还是自己用着方便最好。
推荐解析器资源:
pyquery https://dwz.cn/1EwUKsEGBeautifulsoup http://t.im/ddfvxpath教程 http://t.im/ddg2re文档 http://t.im/ddg63、数据存储
当爬回来的数据量较小时,你可以使用文档的形式来储存,支持TXT、json、csv等格式。但当数据量变大,文档的储存方式就行不通了,所以掌握一种数据库是必须的。
Mysql 作为关系型数据库的代表,拥有较为成熟的体系,成熟度很高,可以很好地去存储一些数据,但在在海量数据处理的时候效率会显著变慢,已然满足不了某些大数据的处理要求。
MongoDB已经流行了很长一段时间,相对于MySQL ,MongoDB可以方便你去存储一些非结构化的数据,比如各种评论的文本,图片的链接等等。你也可以利用PyMongo,更方便地在Python中操作MongoDB。因为这里要用到的数据库知识其实非常简单,主要是数据如何入库、如何进行提取,在需要的时候再学习就行。
Redis是一个不折不扣的内存数据库,Redis 支持的数据结构丰富,包括hash、set、list等。数据全部存在内存,访问速度快,可以存储大量的数据,一般应用于分布式爬虫的数据存储当中。
推荐数据库资源:
mysql文档 https://dev.mysql.com/doc/mongoDB文档 https://docs.mongodb.com/redis文档 https://redis.io/documentation/工程化爬虫掌握前面的技术你就可以实现轻量级的爬虫,一般量级的数据和代码基本没有问题。
但是在面对复杂情况的时候表现不尽人意,此时,强大的爬虫框架就非常有用了。
首先是出身名门的Apache顶级项目Nutch,它提供了我们运行自己的搜索引擎所需的全部工具。支持分布式抓取,并有Hadoop支持,可以进行多机分布抓取,存储和索引。另外很吸引人的一点在于,它提供了一种插件框架,使得其对各种网页内容的解析、各种数据的采集、查询、集群、过滤等功能能够方便的进行扩展。
其次是GitHub上众人star的scrapy,scary是一个功能非常强大的爬虫框架。它不仅能便捷地构建request,还有强大的 selector 能够方便地解析 response,然而它最让人惊喜的还是它超高的性能,让你可以将爬虫工程化、模块化。学会scrapy,你可以自己去搭建一些爬虫框架,你就基本具备爬虫工程师的思维了。
最后Pyspider作为人气飙升的国内大神开发的框架,满足了绝大多数Python爬虫的需求 —— 定向抓取,结构化化解析。它能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储等。其功能强大到更像一个产品而不是一个框架。这是三个最有代表性的爬虫框架,它们都有远超别人的有点,比如Nutch天生的搜索引擎解决方案、Pyspider产品级的WebUI、Scrapy最灵活的定制化爬取。建议先从最接近爬虫本质的框架scary学起,再去接触人性化的Pyspider,为搜索引擎而生的Nutch。
推荐爬虫框架资源:
Nutch文档 http://nutch.apache.org/scary文档 https://scrapy.org/pyspider文档 http://t.im/ddgj反爬及应对措施爬虫像一只虫子,密密麻麻地爬行到每一个角落获取数据,虫子或许无害,但总是不受欢迎的。因为爬虫技术造成的大量IP访问网站侵占带宽资源、以及用户隐私和知识产权等危害,很多互联网企业都会花大力气进行“反爬虫”。
你的爬虫会遭遇比如被网站封IP、比如各种奇怪的验证码、userAgent访问限制、各种动态加载等等。
常见的反爬虫措施有:
通过Headers反爬虫基于用户行为反爬虫基于动态页面的反爬虫字体反爬.....遇到这些反爬虫的手段,当然还需要一些高级的技巧来应对,控制访问频率尽量保证一次加载页面加载且数据请求最小化,每个页面访问增加时间间隔;
禁止cookie可以防止可能使用cookies识别爬虫的网站来ban掉我们;
根据浏览器正常访问的请求头对爬虫的请求头进行修改,尽可能和浏览器保持一致等等。
往往网站在高效开发和反爬虫之间会偏向前者,这也为爬虫提供了空间,掌握这些应对反爬虫的技巧,绝大部分的网站已经难不到你了。
分布式爬虫爬取基本数据已经没有问题,还能使用框架来面对一写较为复杂的数据,此时,就算遇到反爬,你也掌握了一些反反爬技巧。
你的瓶颈会集中到爬取海量数据的效率,这个时候相信你会很自然地接触到一个很厉害的名字:分布式爬虫。
分布式这个东西,听起来很恐怖,但其实就是利用多线程的原理将多台主机组合起来,共同完成一个爬取任务,需要你掌握 Scrapy +Redis+MQ+Celery这些工具。
Scrapy 前面我们说过了,用于做基本的页面爬取, Redis 则用来存储要爬取的网页队列,也就是任务队列。
scarpy-redis就是用来在scrapy中实现分布式的组件,通过它可以快速实现简单分布式爬虫程序。
由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,通过使用消息队列MQ,我们可以异步处理请求,从而缓解系统的压力。
RabbitMQ本身支持很多的协议:AMQP,XMPP, SMTP,STOMP,使的它变的非常重量级,更适合于企业级的开发。
Scrapy-rabbitmq-link是可以让你从RabbitMQ 消息队列中取到URL并且分发给Scrapy spiders的组件。Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统。支持 RabbitMQ、Redis 甚至其他数据库系统作为其消息代理中间件, 在处理异步任务、任务调度、处理定时任务、分布式调度等场景表现良好。
所以分布式爬虫只是听起来有些可怕,也不过如此。当你能够写分布式的爬虫的时候,那么你可以去尝试打造一些基本的爬虫架构了,实现一些更加自动化的数据获取。
推荐分布式资源:
scrapy-redis文档 http://t.im/ddgkscrapy-rabbitmq文档 http://t.im/ddgncelery文档 http://t.im/ddgr你看,通过这条完整的学习路径走下来,爬虫对你来说根本不是问题。
因为爬虫这种技术,既不需要你系统地精通一门语言,也不需要多么高深的数据库技术。
解锁每一个部分的知识点并且有针对性的去学习,走完这一条顺畅的学习之路,你就能掌握python爬虫。
以上便是本文内容,有帮助点赞喜欢支持一下吧。。
手机上可以用来学习编程的软件有哪些?
这个看你选择哪门编程语言了,这里我就Python,Java,C/C++,Html用到的手机软件简单介绍一下,主要内容如下:
1.Python:这里可以下载QPython3这个软件,集成了Python3解释器、Python Shell控制台、QEdit编辑器,还可以通过QPYPI安装第三方库(kivy等),开发简单的安卓应用,下面我简单介绍一下这个软件的安装和使用:
下载QPython3:这个直接在手机应用上搜索下载就行,如下,直接点击安装:
安装成功后,打开这个软件,有两种编程方式,一种是Console控制台,一种是QEdit编辑器,前者就是命令行的Python,后者可以直接编写py脚本并运行:
控制台效果:
QEdit编辑器效果:
程序运行截图如下,类似简单的安卓界面:
如果需要安装第三方库的话,可以直接在QPYPI中点击安装就行,如下:
2.Java:这里可以直接下载AIDE这个软件,集成了Java运行环境,界面美观、漂亮,支持代码高亮、自动补全、语法提示功能,既可以编写Java程序,也可以开发简单的安卓应用和游戏,使用起来非常不错,下面我简单介绍一下这个软件:
下载AIDE:这个直接到手机商店中搜索就行,与上面的QPython类似:
安装成功后,打开这个软件,我们就可以新建项目了,包括基本的Java项目,也包括安卓App等:
官方自带有简单的入门教程,直接点击就能学习,非常适合初学者:
3.C/C++:这里有2个软件可供下载,一个是C4droid(需要root),一个是C语言编译器(不需root),这2个软件使用起来都还不错,下面我简单介绍一下:
C语言编译器:这个直接搜索安装就行,如下:
安装完成后,打开软件,就可以测试运行程序了,如下:
C4droid:这个直接搜索C++编译器,就能找到,如下:
安装完成后,需要下载GCC编译器,才能正常编辑运行,安装完成后,就可以编写运行C/C++程序了:
4.Html:这个可以直接下载w3cschool编程学院,可以一边看教程,一边在线编辑运行代码,使用起来非常方便,下面我简单介绍一下这个软件:
下载w3cschool编程学院,这个直接搜索安装就行,如下:
安装成功后,打开这个软件,搜索html(其他语言,像python,php,java等也可以找到相应资料),就能找到html教程,目录结构如下:
在线编辑运行代码效果如下:
5.最后就是Termux了,一个高级终端,类似一个手机版的Linux,安装相关插件后,可以直接编辑运行C/C++,Python,Ruby等程序,使用起来也非常方便:
下载的话,直接在手机应用中搜索就行,如下,初始启动,需要等待一段时间:
安装成功后,安装相关插件后(pkg install clang,python,ruby等),就可以编辑运行程序了,如下,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语言可视化成品图
说到工具,顺带提一下BI工具---FineBIFineBI是为大数据量提供数据处理、ETL、Dashboard报表展示、动态分析、报表管理的可视化分析工具。优势是:
前端可视化简单操作(小试牛刀):1.新建分析新建分析包括两种类型的分析:普通即时分析和实时报表。普通即时分析:是指普通的分析模板,从cube中获取数据,进行数据分析;实时报表:是指做出来的即时分析模板,可以对数据进行实时查看,保证数据的准确性报表创建完成之后,页面进入数据分析设计界面,选择组件布局为自由布局,如下图:添加组件制作汇总表制作图表组件布局:自适应布局&自由布局自适应布局,自动调节布局自由布局,自由选择布局