您的位置:首页 > 其它

R绘图

2015-10-26 21:37 120 查看
R绘图命令分为三种类型:

高级绘图命令在图形设备上产生一个新的图区,它可能包括坐标轴,标签,标题等等。
低级画图命令会在一个已经存在的图上加上更多的图形元素,例如额外的点,线和标签。
交互式图形命令允许你交互式的用定点设备(如鼠标)在一个已经存在的图上添加图形信息或者提取图形信息。

基本图库graphics包:
高级绘图函数:
plot函数:
这个函数主要用来画散点图。
因为plot()

函数默认启动一个新的页面,所以你需要禁止该操作,因此设定选项newpage = FALSE。
plot(x,y),plot(xy)如果x和y是向量,则plot(x,y)将产生y对x的散点图。用包含两个分量x和y的列表或是一个双列的矩阵作为一个参数(第二种形式)也能得到一样的结果

plot(x)如果x是一个时间序列,这将产生一个时间序列图。如果x是一个数值向量,它将产生一个向量值对该向量索引的图。如果x是一个复向量,它将会产生一个向量元素的虚部对实部的图
plot(f),plot(f,y)f是一个因子对象,y是一个数值向量。第一种形式产生f的直方图;第二种形式残生y在f各水平下的盒状图。
plot(df),plot(~expr),

plot(y~expr)
df是一个数据框,y是任何对象,expr是一个对象被‘+’分割的表列(如,a+b+c)。前两种将产生数据框中变量的分布图(第一种形式)和一系列制定对象的分布图(第二种形式),第三种形式将得到y相对expr中各个对象画的图。
plot(graph)
graph是一副已经保存下来的图,例如:
graph <- densityplot(~height,data = singer,groups = voice.part,
plot.points = F,auto.key = list(columns = 4))
plot(graph)


pairs函数:
可以用来显示多元变量两两间的关系。
R 为描绘多元数据提供了两个非常有用的函数。如果
X 是一个数值矩阵或者数据框,命令
> pairs(X)
将产生X
的列之间两两相对的成对散点图阵列( pairwise scatterplot matrix)。也就是说,X的每一列相对
X 的所有其他列而产生
n(n -1)
个图,并且把这些图以阵列个形式显示在图区。这个图形阵列的行列图形尺度一致。



coplot函数,这个函数也是可以用来处理多个变量的,产生描述多变量的图。

coplot(a~b|c)a,b是数值向量,c是数值向量或因子对象。将产生一系列在给定c值下a对b的散点图。c是因子对象,这就简单表示a在c各个水平下对b画的散点图。当c是数值向量,它将会被分割成一系列条件区间,对任一区间,区间内c对应a,b值将绘制a对b的散点图。
coplot(a~b|c+d)产生任何在c和d联合区间内的a对b的散点图。


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(),也能在其他高级绘图函数中设定的参数。
应用中,涉及这三类参数最多的是第三类,最少的是第一类。

查看当前参数的赋值用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二元素数值型向量,分别指定横轴和纵轴的最小值和最大值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: