r绘图基本

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 二元素数值型向量,分别指定横轴和纵轴的最小值和最大值

posted @ 2017-02-22 10:39  holy_black_cat  阅读(6139)  评论(0编辑  收藏  举报