简单介绍一下ggplot2
既然要做“系列”当然要先介绍一下主角-ggplot2。ggplot2是一个十分强大的R语言可视化包。它的核心理念是将绘图与数据分离,数据相关的绘图与数据无关的绘图分离。它是按图层作图的,一个语句做一个仅包含基础作图单元的图层,然后通过不同图层的叠加最后成图。大繁至简,就像你学会了基本的汉子就能组成任何语句,表达你想表达一切,这种通过基础元素的叠加组合可以实现任何图,限制画图的将只有你的想象力。除了作图,ggplot2也将基本的统计融入其中,可以说是数据玩家的得意兵器。
理解ggplot2从两点开始:
1,ggplot2将绘图视为一种映射。作图的根本目的是什么?就是把大量的数据用直观的图形展示出来,本质就是一种数据和图形的对应关系,也可以说是一种映射。而ggplot2就是从这种理念出发的,它把作图直接看成一种从数学空间到图形元素空间的映射。简单理解对于分类数据来讲可以将不同分类映射到不同的颜色或者不同的形状,把连续数据映射成柱子的高度,线段的长度等等。从这一点理解数据会有助于后期对图的设计。
2,ggplot2的图层叠加思想。ggplot2不去定义复杂的图形,如瀑布图,棒棒糖图。为什么不呢?一旦定义了暴露给使用者的接口必定有限,所以画出的图就局限在绘图包设定的圈子里了,不但可操作性差且你要在小本本里记住每一个图用哪个包,如何调参,太不友好。ggplot2只定义各种底层组件(如线条、方块),使用者可以用这些基本组件根据自己需求来合成复杂的图形,这使它能以非常简洁的函数构建各类图形,一层一层往上加,语法上很好理解。
综上,ggplot2绘图理念如下:Plot(图)= data(数据集,主要是data frame)+ Aesthetics(美学映射,比如将变量映射给x,y坐标轴,或者映射给颜色、大小、形状等图形属性)+ Geometry(几何对象,即基本的底层组件)。
介绍几个基础概念
Layer(图层):现在很多P图的软件都有图层的概念(如photoshop)。可以把图层想象成仅包含各种图形元素的透明玻璃,一层一层叠加成复杂的图形,例如第一层是坐标轴,第二层是不同的点,第三层是图例,那么组合在一起就是一张散点图。不同图层直接直接用“+”连接就可以。你可以单独对每一个图层进行修改、增加统计量、甚至改动数据。
Coordinate(坐标):坐标系统控制了图形的坐标轴。坐标是整张图的参照物,影响所有图形元素。最常用的是直角坐标轴、极坐标轴等,还可以对坐标轴进行变换以使得图形看起来更加优雅,如对数坐标。
Scale(标度):标度是一种函数,它控制了数学空间到图形元素空间的映射。连续数据可以映射到坐标轴,也可以映射到图形的大小;分类数据可以映射成为不同的形状、颜色。
Facet(位面):位面是控制分组绘图的方法和排列形式。
安装加载
install.packages("ggplot2")
library(ggplot2)
数据准备
ggplot一般使用数据框
phenotype <- read.table('Test.txt', header=T)
ggplot2画图的一般语法
ggplot(data = clin, mapping = aes(x = Tumor_Sample_Barcode, y = OS,colour=factor(ORR))) + geom_bar(stat = 'identity',position='dodge')+xlab('')+ylab('')+
+theme(panel.grid.major.x=element_blank(), axis.text.x=element_text(angle=45, hjust=1), legend.position="top")
1,ggplot:指整张图,包括background和title
2,“+”:ggplot2使用图层将各种图形元素逐步添加组合,从而形成最终结果。
3,data:第一层必须是原始数据层,data参数控制数据来源,注意数据形式只能是数据框格式
4,mapping:aes参数控制了对哪些变量进行图形映射,以及映射方式,aes是Aesthetic的缩写。它将Tumor_Sample_Barcode映射到X轴,将OS映射到Y轴,将ORR变为分类数据后映射为不同的颜色。
5,第二层为条形图(geom_bar),geom表示几何对象,它是ggplot中重要的图层控制对象。每个geom对象都需要有数据输入,数据可以从第一层中自动读取,也可以在aes参数中直接设置。而且每个geom还默认搭配某种统计变换(stat),geom_bar默认的统计变换是count(计数),这里我们调整成了identity,及不做任何变换直接展示。position表示位置调整(Position adjustments)是针对同一图层内元素的位置进行微调的方法。它包括五种设置:stack(推叠放置)、dodge(并列放置)、fill(百分比堆叠)、identity(不做任何改变直接显示出来)、jitter。
6,legend(包括backgroud、text、title),用theme来调整
7,其他文字部分的调整可以增肌整个图的可读性,如xlab('')+ylab('')
关于ggplot2先介绍这些,后期会陆续介绍怎么利用他画常见的图~
网友评论