r绘图基本
Posted holy_black_cat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了r绘图基本相关的知识,希望对你有一定的参考价值。
R绘图命令分为三种类型:
- 高级绘图命令在图形设备上产生一个新的图区,它可能包括坐标轴,标签,标题等等。
- 低级画图命令会在一个已经存在的图上加上更多的图形元素,例如额外的点,线和标签。
- 交互式图形命令允许你交互式的用定点设备(如鼠标)在一个已经存在的图上添加图形信息或者提取图形信息。
基本图库graphics包:
高级绘图函数:
plot函数:
这个函数主要用来画散点图。
因为plot() 函数默认启动一个新的页面,所以你需要禁止该操作,因此设定选项newpage = FALSE。
|
||||||||||
pairs函数:
可以用来显示多元变量两两间的关系。
R 为描绘多元数据提供了两个非常有用的函数。如果 X 是一个数值矩阵或者数据框,命令
> pairs(X)
将产生X 的列之间两两相对的成对散点图阵列( pairwise scatterplot matrix)。也就是说,X的每一列相对 X 的所有其他列而产生
n(n -1) 个图,并且把这些图以阵列个形式显示在图区。这个图形阵列的行列图形尺度一致。
|
||||||||||
coplot函数,这个函数也是可以用来处理多个变量的,产生描述多变量的图。
|
||||||||||
hist(x,nclass=n,breaks=b)函数参数说明(用来产生柱状图):
prob=T:设置参数prob=T,我们可以得到每个取值区间的概率,如果该参数设置为FALSE或者忽略该参数,它将给出频数;
xlab=‘‘:设置图像横坐标名称;
main=‘‘:设置图像上方显示的标题;
ylim=0:1 :设置纵坐标的范围,这里设置为(0,1);
产生数值向量x的柱状分布图。程序会自动选择合适的分类数目,但可以通过设定参数nclass=来改变分类数。还有一种方法是,通过参数breaks=精确设置断点。如果设定参数probability=TRUE,柱高度将表示频率而不是频数。
|
||||||||||
ts.plot(x_1,x_2...): 在一个形同的尺度里绘制任意数目的时间序列。在x_i都是一般数值向量时,这种自动的同步标化的特性依然很有用。这时,它们相对1,2,3,...绘制。 例子: ts.plot(ldeaths, mdeaths, fdeaths, gpars=list(xlab="year", ylab="deaths", lty=c(1:3))) |
||||||||||
stats::qqnorm(x),stats:: qqline(x),stats:: qqplot(x,y):
分位比较图。第一种形式显示数值向量x相对期望的正态有序分值的比较图(正态分值图);第二种形式是在这个图上加一条理论上的分位对分位的直线。第三种形式产生x的分为对y的分位的图以比较二者是否同分布。对qqnorm(x)单独说明: 例如: > x<-rnorm(20) > qqnorm(x) x产生了20个点之后,按顺序排列,纵坐标是x的取值,横坐标第一个数字是1/40的分位数接着是3/40的分位数,一直到39/40的分位数,qnorm(1/40)...qnorm(39/40)。 |
||||||||||
dotchart(x,...): 产生数据x的点图。在一个点图里面,y-轴给定x里面数据的标签,x-轴给出它们的值。这种图非常容易从视觉上看出在某个特定范围内的数据元素。 例子: > VADeaths Rural Male Rural Female Urban Male Urban Female 50-54 11.7 8.7 15.4 8.4 55-59 18.1 11.7 24.3 13.6 60-64 26.9 20.3 37.0 19.3 65-69 41.0 30.9 54.6 35.1 70-74 66.0 54.3 71.1 50.0 > dotchart(VADeaths, main = "Death Rates in Virginia - 1940") |
||||||||||
image(x),contour(x),persp(x): x是一个数值矩阵,image产生一个长方形网格,用不同的颜色表示x的值,contour以等高线来表示x的值,persp产生3D表面。 例如: > volcano[1:10,1:10] [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 100 100 101 101 101 101 101 100 100 100 [2,] 101 101 102 102 102 102 102 101 101 101 [3,] 102 102 103 103 103 103 103 102 102 102 [4,] 103 103 104 104 104 104 104 103 103 103 [5,] 104 104 105 105 105 105 105 104 104 103 [6,] 105 105 105 106 106 106 106 105 105 104 [7,] 105 106 106 107 107 107 107 106 106 105 [8,] 106 107 107 108 108 108 108 107 107 106 [9,] 107 108 108 109 109 109 109 108 108 107 [10,] 108 109 109 110 110 110 110 109 109 108 > image(volcano) > contour(volcano) > persp(volcano) |
||||||||||
smoothScatter()函数: 这个函数可以用来做密度图,如果数据太多,做散点图就会混成一团,使用smoothScatter函数,用颜色来区分密度。 例如: smoothScatter(data_entertainment) 输出: |
||||||||||
plot.new(): 新建一个空白的窗口。 |
||||||||||
curve()函数: 这个函数用来画曲线,例子如下: f <- function(x){return(1-exp(-x))} curve(f,0,2) 表示画一条f的曲线,曲线的定义域是0到2. |
stats::density(algae$mxPH,na.rm=T) 核密度函数,作用是假设数据服从某个密度分布,此函数结合lines()函数,能够将数据描绘成一个光滑的密度分布曲线。 > d <- density(faithful$eruptions, bw = "sj") > plot(d,type="n") > lines(d)
|
stats::lowess()
lowess() 函数则用来添加一条平滑曲线 。 该 平 滑 曲 线 拟 合 是 一 种 基 于 局 部 加 权 多 项 式 回 归 的 非 参 数 方 法
也是和lines函数配合使用
lines(lowess(wt,mpg),col = "blue",lwd = 2,lty = 2)
|
rug(x)一个低级图形函数,将x中所有的数据映射到坐标轴上:
size=1:参数(1 到4, 从底部顺时钟方式数)定义的某一侧增加一个坐标轴。
|
abline()低级图形函数,在图中画一条线,参数列表:
lty=1:线的样式;
|
points(x,y): 在当前图上增加点。 > points(c(1,2,3,4),rep(0.5,4)) |
lines(x,y): 在当前图上增加连接线。 |
text(x,y,labels,...): 在图上给定x,y位置添加文字。labels经常是整数或者字符向量,此时,labels[i]放置在(x[i],y[i])处 |
abline(a,b),abline(h=y),abline(v=x),abline(lm.obj): abline(a,b),:在当前图上增加一条斜率为b截距为a的直线。 abline(h=y):画一条水平线。 abline(v=x):画一条垂线。 abline(lm.obj):画一条拟合直线。 |
polygon(x,y):
绘制由(x,y)作为顶点的多边形。这个函数还能设置多边形内的填充颜色和边界的颜色
|
legend(x,y,legend): 在当前图的特定位置增加图例。 |
title(main,sub): 将main定义的标题以大字体的形式放在当前图的顶部,同时可以将sub定义的小标题以小字体的形式放在下部。 |
axis(side ,...): 定制坐标轴。 在第一个参数(1到4,从底部顺时针方式数),定义的某一侧增加一个坐标轴。另一个参数控制坐标轴相对图区的位置,刻度位置和标签位置。这对调用参数设置axis=FALSE的plot()函数后增加定制的坐标轴非常有用。 |
box():
这个函数可以在当前图像上画一个长方形。
|
交互式图形命令:
identify(x,y): 可以在图上记录下鼠标点击的位置。 例子: plot(x,y) identify(x,y) 输入后点击图片,保存,图片就会记录下鼠标的点击位置。 |
locator(n,type): 等待用户用鼠标左键点击当前图上特定位置。这个过程直到n个点被选择,或者另外一个鼠标键被点击了。参数type允许在被选择的点上画图并且有高级画图命令一样的效果,默认情况下不能画图。locator()以双分量x和y的列表形式返回所选中点的位置。 例如: >po<-locator(1) 点击图像上一次后,po会记录下点击的位置。
|
par()函数及其参数说明:
函数在此次会话过程中,永久的改变图形界面:
par函数详解:
par()函数是R里有关绘图的重要函数之一,以下是对par()函数说明内容的一些整理。
描述:
描述:
par函数用于设定或询问绘图参数。参数设定可通过par(参数名 = 取值)或par(赋值参数列表)的形式进。
用法:
par(..., no.readonly = FALSE)
函数变量:
... “参数名 = 取值”或“赋值参数列表”形式的变量。
no.readonly 逻辑变量。如= TRUE且没有其他变量, 则返回当前绘图设备下已设定好的绘图参数。
参数:
参数分为三类:
一、仅仅用于询问不能被设定的参数:cin,cra,csi,cxy,dim。
二、仅能通过par()设定参数:ask,fig,fin,lheight,mai,mar,mex,mfcol,mfrow,mfg,new,oma,omd,omi,pin,plt,ps,pty,usr,xlog,ylog。
par(..., no.readonly = FALSE)
函数变量:
... “参数名 = 取值”或“赋值参数列表”形式的变量。
no.readonly 逻辑变量。如= TRUE且没有其他变量, 则返回当前绘图设备下已设定好的绘图参数。
参数:
参数分为三类:
一、仅仅用于询问不能被设定的参数:cin,cra,csi,cxy,dim。
二、仅能通过par()设定参数:ask,fig,fin,lheight,mai,mar,mex,mfcol,mfrow,mfg,new,oma,omd,omi,pin,plt,ps,pty,usr,xlog,ylog。
三、除了par(),也能在其他高级绘图函数中设定的参数。
应用中,涉及这三类参数最多的是第三类,最少的是第一类。
查看当前参数的赋值用par("参数名")
第三类参数:
查看当前参数的赋值用par("参数名")
第三类参数:
adj | 调整函数text,mtext,title里文本串的位置。= 0:文本串左对齐;= 0.5(缺省):文本串 居中;= 1:文本串右对齐。 |
ann | = FALSE:不进行绘图解释标记(例如横轴标题等)。 |
bg | 设置绘图区背景色。缺省为bg = "transparent"。 |
bty | 设置绘图边框的形式。= "o"(缺省):四周边框;= "l":左下边框;= "7":右上边框;= "c":上左 下边框;= "u":左下右边框;= "]":上右下边框;= "n";无边框。 |
cex | 设置文本和符合的尺度。缺省为cex = 1。 |
cex.axis | 相对于当前的cex设置,放大坐标标记(坐标轴标记的数字)。缺省为cex.axis = 1。 |
cex.lab | 相对于当前的cex设置,放大坐标轴标题。缺省为cex.lab = 1。 |
cex.main | 相对于当前的cex设置,放大图标题。缺省为cex.main = 1。 |
cex.sub | 相对于当前的cex设置,放大图副标题。缺省为cex.sub = 1。 |
col | 设置绘图颜色。缺省为col = "black"。 |
col.axis | 设置坐标标记颜色。缺省为col.axis = "black"。 |
col.lab | 设置坐标轴标题颜色。缺省为col.lab = "black"。 |
col.main | 设置图标题颜色。缺省为col.main = "black"。 |
col.sub | 设置图副标题颜色。缺省为col.sub = "black"。 |
crt | 缺省为crt = 0。 |
err | 期望的错误报告程度(像该参数目前在R中未生效)。缺省为err = 0。 |
family | 设置文本字体字体族。缺省为family = ""。 |
fg | 设置前景色,主要用于坐标轴,边框,图形等,对坐标标记与坐标轴标题等外围无影响。缺省 为fg = "black"。 |
font | 设置文本字体。= 1(缺省):普通字体;= 2:粗体;= 3:斜体;= 4:粗斜体;...。 |
font.axis | 设置坐标标记字体。 |
font.lab | 设置坐标轴标题字体。 |
font.main | 设置图标题字体。 |
font.sub | 设置图副标题字体。 |
lab | 设置坐标轴刻度数,lab = c(x,y,len)形式,目前len的设置在R中未生效。缺省为lab = c(5,5,7)。 |
las | 设置坐标标记显示方向。= 0(缺省):平行于坐标轴;= 1:平行于x轴;= 2:垂直于坐标 轴;= 3:平行于y轴。 |
lend | 设置线结束端的形状(只有把线画很粗才能看出来)。= 0(缺省):圆形;= 1:“短”方 形;= 2:“长”方形。 |
ljoin | 设置线交接处的性质(只有把线画很粗才能看出来)。= 0(缺省):圆角;= 1:方角;= 2:切方角顶角。 |
lmitre | 设置ljoin里方角向切方角顶角过渡的程度。缺省为lmitre = 10。 |
lty | 设置线的类型。= 0:空白;= 1:(缺省)实线;= 2:短线虚线;= 3:点虚线;= 4:短线点 虚线;= 5:长线虚线;= 6:长短线虚线。 |
lwd | 设置线宽。缺省为lwd = 1。 |
mgp | 设置坐标轴标题,坐标标记和坐标轴边界宽度。mgp[1]影响坐标轴标题,mgp[2,3]影响坐标标 记和坐标轴。缺省为mgp = c(3,1,0)。 |
pch |
设置点的类型。缺省为pch = 1。
|
srt | 逆时针选择字符串,单位为°,只用于text函数。缺省srt = 0。 |
tck | 设置坐标刻度线长与方向(与图宽和高的较小者成比例)。缺省为tck = "NA"。 |
tcl | 设置坐标刻度线长与方向(与文本行高成比例)。缺省为tcl = -0.5。 |
xaxs,yaxs | 设置坐标轴的范围。= "r"(缺省):先将数据范围向双边扩大4%,然后绘图;= "i":在原始 数据范围内绘图。 |
xaxt,yaxt | 设置坐标轴样式。= "s"(缺省):标准样式;= "n":不绘坐标轴。 |
第二类函数:
ask | = TRUE:在新图绘制前进行提示。 |
fig | 设定图在绘图设备中的位置,fig = c(x1,x2,y1,y2)的数值向量(0<=x1<x2<=1; 0<=y1<y2<=1)。缺省为fig = c(0,1,0,1)。(注:设定即开始新的绘图) |
fin | 设定绘图区的宽和高。缺省为fin = c(6.999999,6.999999)。(注:设定即开始新的绘图) |
lheight | 设置文本行高。缺省为lheight = 1。 |
mai | 设置图形空白边界,mai =c(bottom, left, top, right),单位为英寸。缺省 为mai = c(1.02,0.82,0.82,0.42)。 |
mar | 设置图形空白边界行数,mar = c(bottom, left, top, right)。缺省为mar = c(5.1,4.1,4.1,2.1)。 |
mex | 设置图形空白边界尺度。缺省为mex = 1。 |
mfcol,mfrow | 设置小图数量与位置,取值为数值型向量c(nr, nc)形式,表示把图分为nr行nc列个小图,图 形顺序按列排(mfcol)或按行排(mfrow)。 |
mfg | 设置工作小图,mfg = c(i,j),表示把第i行第j列的小图设为当前工作小图。(需在mfcol 或mfrow使用后才能使用该参数) |
new | = TRUE:下一高水平绘图指令不会清楚已绘的图,而是在原有图基础上继续绘新图。 |
oma | 设定图形的外边界大小,oma = c(bottom,left,to,right),单位为文本行数。缺省为oma = c(0,0,0,0) |
omd | 设定图形外边界内部占图形设备的比例,omd = c(x1,x2,y1,y2)。缺省为omd = c(0,1,0,1)。 |
omi | 设定图形的外边界大小,omi = c(bottom,left,to,right),单位为英寸。缺省为oma = c(0,0,0,0) |
pin | 设定当前图的长宽,pin = c(width,height)。 |
plt | 设定绘图区(plot region)占图形区(figure region)的比例,plt=c(x1,x2,y1,y2)。 |
ps | 设置文本点的大小。缺省为ps = 12。 |
pty | 设置作图类型。= “m”(缺省):最大化作图;= “s":方形图。 |
usr | 设置图的坐标范围,usr = c(x1,x2,y1,y2),即横坐标在x1到x2之间,纵坐标在y1到y2之间。若xlog或ylog参数为TRUE,则usr设置的点按10^c(x1,x2,y1,y2)使用。 |
xlog | = TRUE:横坐标取对数。 |
ylog | = TRUE:纵坐标取对数。 |
高级绘图函数(可以产生窗口):
scatterplot3d包:
scatterplot3d函数用来绘制三维散点图:
例子:> x<-rnorm(100) > y<-rnorm(100) > z<-rnorm(100) > scatterplot3d(x,y,z) |
ggplot2包
ggplot2网站: http://had.co.nz/ggplot2/
ggplot2 包提供了一个基于全面而连贯的语法的绘图系统。它弥补了R中创建图形缺乏一致性的缺点,使得用户可以创建有创新性的、新颖的图形类型。
ggplot2 中最简单的绘图方式是利用qplot() 函数,即快速绘图函数。格式为:
qplot(x, y,data=,color=,shape=,size=,alpha=,geom=,method=,formula=,facets=,xlim=,ylim=,xlab=,ylab=,main=,sub=)
下表列出了上述参数/选项的定义。
qplot选项
选项
|
描述
|
alpha | 元素重叠的alpha透明度,数值为0(完全透明)到1(完全不透明)间的分数 |
color、shape、size、fill | 把变量的水平与符号颜色、形状或大小联系起来。对于直线图, color将把线条颜色与变量水平联系起来,对于密度图和箱线图, fill将把填充颜色与变量联系起来。图例将会被自动绘制 |
data | 指定一个数据框 |
facets | 指定条件变量,创建一个栅栏图。表达式如rowvar ~ colvar(示例见图16-10)。为创建一个基于单条件变量的栅栏图,可用rowvar ~ .或. ~ colvar |
geom | 设定定义图形类型的几何形状。 geom选项是一个单条目或多条目的字符型向量,包 括 "point" 、 "smooth" 、 "boxplot" 、 "line" 、 "histogram" 、"density" 、 "bar" 和"jitter" |
main、sub | 字符向量,设定标题和副标题 |
method、formula | 若geom = "smooth" ,则会默认添加一条平滑拟合曲线和置信区间。 当观测数大于1000时,便需要调用更高效的平滑拟合算法。方法包括回归lm、广义可加模型gam、稳健回归rlm。 formula参数指定拟合的形式例如,要添加简单的回归曲线,则设定geom = "smooth", method = "lm",formula = y ~ x。将表达式改为y ~ poly(x, 2) 将生成二次拟合。注意表达式使用的是字母x和y,而不是变量的名称对于method = "gam" ,一定要记得加载mgcv包。对于method = "rml" ,则需加载MASS包 |
x、y | 指定摆放在水平轴和竖直轴的变量。对于单变量图形(如直方图),则省略y |
xlab、ylab | 字符向量,设定横轴和纵轴标签 |
xlim、ylim | 二元素数值型向量,分别指定横轴和纵轴的最小值和最大值 |