1.分面

分面是指在一个页面上自动摆放多幅图形的技巧,也就是说可以让不同分类的图同时展示在一张图上,这样方便于数据之间的的比较。ggplot2提供了网格型(facet_grid)和封装型(facet_wrap)两种分面类型,下面就针对不同的两种分面进行介绍。

1.1 网格分面(facet_grid)

如果我们对图像什么也不改变,或者加上facet_null()则不会出现分面效果(如下所示)。

library("ggplot2")
mpg2<-subset(mpg,cyl!=5&drv %in% c("4","f"))
qplot(cty,hwy,data=mpg2)+facet_null()

一行多列:".~a"这时候纵坐标轴相同,有助于y的比较。

qplot(cty,hwy,data=mpg2)+facet_grid(.~cyl)

一列多行:"b~."这时候横坐标相同,有助于x的比较,尤其是数据的分布。

qplot(cty,data=mpg2,geom="histogram",binwidth=2)+facet_grid(cyl~.)

多行多列:"a~b"

qplot(cty,hwy,data=mpg2)+facet_grid(drv~cyl)

添加边际图:"margins=TRUE"

下面代码添加了一个边际(类似于列联表的边际和),并对每个驱动轮类型添加了彩色平滑线。

qplot(displ,hwy,data=mpg2)+geom_smooth(aes(colour=drv),method="lm",se=FALSE)+facet_grid(drv~cyl,margins=TRUE)

1.2 封装分面(facet_wrap)

下面代码展示了每十年电影平均评分的分布情况,利用封装分面的规则按照年代进行分类绘图。

library("ggplot2")
library("plyr")
movies$decade<-round_any(movies$year,10,floor)
qplot(rating,..density..,data = subset(movies,decade>1890),geom="histogram",binwidth=0.5)+facet_wrap(~decade,ncol=6)

分面变量的设置格式为~a+b+c,facet_wrap尽可能摆成方形,也可以通过设置ncol,nrow来改变。

1.3 标度控制

可以通过调整参数scales来控制面板的位置标度是固定的还是变化的。

scales="fixed':x和y的标度在所有面板中都相同。

scales="free":x和y的标度在每个面板都可以变化。

scales="free_x":x可变,y固定。

scales='free_y":y可变,x固定。

Example:

library("ggplot2")
p<-qplot(cty,hwy,data=mpg)
p+facet_wrap(~cyl)
p+facet_wrap(~cyl,scales = "free")

使用网格分面(facet_grid)时还有一个额外的限制:同列的面板必须有相同的x标度,同行的面板必须有相同的y标度。这是因为网格分面中,每列都公用一个x轴,每行共用一个y轴。

ggplot2:分面的介绍的更多相关文章

  1. ggplot2 分面相关设置(facet)

    分面设置在ggplot2应该也是要经常用到的一项画图内容,在数据对比以及分类显示上有着极为重要的作用, 下面是两个经常要用到的分面函数. facet_wrap(facets, nrow = NULL, ...

  2. [转]ggplot2用法简单介绍

    简介 ggplot2包是基于Wilkinson在<Grammar of Graphics>一书中所提出的图形语法的具体实现, 这套图形语法把绘图过程归纳为data, transformat ...

  3. Mysql分表和分区的区别、分库分表介绍与区别

    分表和分区的区别: 一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这 ...

  4. Mysql分表和分区的区别、分库分表介绍与区别(转)

    分表和分区的区别: 一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这 ...

  5. 3星|《腾讯产业森林:AI时代的创业密码》:后半部分是较详细的创业指南,前面泛泛介绍腾讯、AI

    腾讯产业森林:AI时代的创业密码 前半部分泛泛介绍腾讯对创业者的支持,腾讯支持的创业项目的案例.AI的一些基本介绍,后半部分是比较详细的写给创业者的各阶段行动与选择的指南. 总体评价3星,有一些参考价 ...

  6. ggplot2包--R可视化

    1.ggplot2发展历程 ggplot2是Hadley在爱荷华州立大学博士期间的作品,也是他博士论文的主题之一,实际上ggplot2还有个前身ggplot,但后来废弃了,某种程度上这也是Hadley ...

  7. R----ggplot2包介绍学习

    分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将绘图与数据分离,数据相关的绘图与数据无 ...

  8. R语言 ggplot2包

    R语言  ggplot2包的学习   分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...

  9. R----ggplot2包介绍学习--转载

    https://www.cnblogs.com/nxld/p/6059603.html 分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplo ...

随机推荐

  1. http服务搭建

    http服务器搭建 主配置文件在 /etc/httpd/conf/httpd.conf 安装http  yum install httpd -y 启动http服务器  systemctl start ...

  2. Java设计模式之《组合模式》及应用场景

    摘要: 原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/6489827.html 组合模式,就是在一个对象中包含其他对象,这些被包含的对象可能是 ...

  3. n的阶乘

    涉及阶乘的都会产生大的数据,此时要变成long或者实在很大要使用BigInteger 题目描述 输入一个整数n,输出n的阶乘 输入描述: 一个整数n(1<=n<=20) 输出描述: n的阶 ...

  4. ajax 写登录

    AJAX的全称是Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). ajax的优点: 1.最大的一点是页面无刷新,用户的体验非常好. 2.使用 ...

  5. app 评分

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #822e0e } p.p2 { margin: 0.0px 0. ...

  6. Gradle之恋-命令行详解

    虽然很多童鞋都必须要用IDE,但有些命令是IDE很难表现出来的,还是命令行返璞归真.本文就带你来剖析Gradle的命令行. 本文不包括试验性(incubating)的选项,如--configure-o ...

  7. No module named machinery

    py2exe模块0.9版本只支持python3以上,要想在python2.7中运用,就要下载0.6 版本的py2exe http://sourceforge.net/projects/py2exe/f ...

  8. SQL语句流程函数

    本人因为今天用到了流程函数,顿时感觉语法生疏啊,为了防止以后忘记,故写此篇!!! 流程函数是MySQL相对常用的一类函数, 用户可以使用这类函数在一个SQL语句中实现条件选择, 这样能够提高效率. 下 ...

  9. ThinkPHP数据字段的缓存问题

    在使用ThinkPHP开发应用时,在项目运行后会在应用(Application)目录下产生一个Runtime缓存文件夹 在生成Runtime之后,若改变数据表的字段结构,则在PHP代码中无法为新的字段 ...

  10. 开发使用Node.js的一个小技巧

    Node.js作为可以在服务器端运行的一门语言,其处理长连接.多请求的优势受到各大编程爱好者的追捧. 但是在开发调试方面却极为不方便,因为每次改动代码后,都需要终止当前进程,重启服务器.supervi ...