ggplot2:分面的介绍

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轴。

时间: 2024-08-06 07:56:45

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

[转]ggplot2用法简单介绍

简介 ggplot2包是基于Wilkinson在<Grammar of Graphics>一书中所提出的图形语法的具体实现, 这套图形语法把绘图过程归纳为data, transformation, scale, coordinates, elements, guides, display等一系列独立的步骤, 通过将这些步骤搭配组合, 来实现个性化的统计绘图.于是, 得益于该图形语法, Hadley Wickham所开发的ggplot2是如此人性化, 不同于R基础绘图和先前的lattice那样参

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

分表和分区的区别: 一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,具体请参考mysql分区功能详细介绍,以及实例 二,mysql分表和分区有什么区别呢 1,实现方式上 a),mysql的分表是真正的分表,一张表分成很多表后,每一个小表都是完正的一张表,都对应三个文件,一个.MYD数据文件,.MYI索引文件,.frm表

Word 分节介绍

分节的作用 分节符,顾名思义,把你的文档分成几个节,比如好比一本书,有几个章节,每个章节有着不同的排版.将Word分节可以对每一节的样式单独操作.可以对每一节的页眉页脚页码等单独定义. 如何分节 使用注意 使用时需要注意一下几点: 1:定义分节的方式 2:定义分节的位置 3:定义分节后取消"与上一节相同" 4:重复点 "解链接到前一条页眉".即:先取消与上一节相同,后选择与上一节相同. 如图:

Mysql分区和分表介绍

为什么要分区和分表 我们的数据库数据越来越大,随之而来的是单个表中数据太多,以至于查询速度过慢,而且由于表的锁机制导致应用操作也受到严重影响,出现数据库性能瓶颈. MySQL中有一种机制是表锁定和行锁定,是为了保证数据的完整性.表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行.行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操纵.但出现这种情况时,我们可以考虑分表或者分区. 分表 什么是分表 分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,每个

HTML elements 分类别介绍

The HTML elements below are grouped by function. 1.Basic elementsBasic elements are the backbone of any HTML documents.<html> 2.Document metadataMetadata contains information about the page. This includes information about styles, scripts, and data

ggplot2包--R可视化

1.ggplot2发展历程 ggplot2是Hadley在爱荷华州立大学博士期间的作品,也是他博士论文的主题之一,实际上ggplot2还有个前身ggplot,但后来废弃了,某种程度上这也是Hadley写软件的特 征,熟悉他的人就知道这不是他第一个“2”版本的包了(还有reshape2).带2的包和原来的包在语法上会有很大的改动,基本上不兼容.尽管如此,他的R代码风格在R社区可谓独树一帜,尤其是他的代码结构很好,可读性很高,ggplot2是R代码抽象的一个杰作.读者若感兴趣,可以在GitHub网站

java 加载dll介绍(转)

最近在做的工作要用到本地方法,需要在Java中加载不少动态链接库(以下为方便延用Windows平台下的简写dll,但并不局限于Windows).刚刚把程序跑通,赶紧把一些心得写出来,mark.也希望对大家的类似工作有所帮助 首先,应当明确,dll有两类:(1)Java所依赖的dll和,(2)dll所依赖的dll.正是由于第(2)种dll的存在,才导致了java中加载dll的复杂性大大增加,许多说法都是这样的,但我实验的结果却表明似乎没有那么复杂,后面会予以详细阐述. 其次,Java中加载dll的

Shiro权限控制框架入门1:Shiro的认证流程以及基本概念介绍

前言:我在最开始学习Shiro这个框架时,在网上搜索到的一个介绍比较全面的教程是:<跟我学Shiro>系列教程.但是在我看了他写的前几篇文章后,我发现虽然他在这个系列教程中把shiro的一些特性介绍地非常全面详细,但是整个教程的叙述方式还是有很大缺陷的.文章与文章之间并没有很好地串联起来,每篇文章介绍的东西都过于分散了,如果是对shiro完全不了解的新手来看的话完全是一场噩梦.就像一个网友评价的这样: 看了看这个教程,看完之后都想放弃shiro了,完全看不懂,后来百度了很多别的资料才理解了sh

BMP格式介绍(一)

原理篇: 一.编码的意义. 让我们从一个简单的问题开始,-2&-255(中间的操作符表示and的意思)的结果是多少,这个很简单的问题,但是能够写出解答过程的人并不 多.这个看起来和图片格式没有关系的问题恰恰是图片格式的核心内容以至于整个计算机系统的核心内容,多媒体技术虽然没有数据结构,操作系统等计算机基础课 所占的地位重,但是在于研究编码方面有着非常重要的地位.图像其实可以看做一种特殊编码过的文件. 二.从简单的24位bmp开始 bmp是最常见也是编码方式最简单的图片格式,这里不说明一幅图片是怎