R语言实战—03图形初阶


R语言实战—03图形初阶_第1张图片

3.1 使用图形

使用代码保存图形:
保存为PDF—pdf(filename),其它格式:win.metafile( ), png( ),jpeg( ),bmp( ),tiff( ),xfig( ),postcript( )
打开新的图形窗口的方法:
第一种方法:
dev.new( )
statements to create graph 1
dev.new( )
statements to create graph2
etc.
第二种方法:
MAC系统:Quartz菜单—“Back”和“Forward"
Windows系统: 勾选“历史”History—“记录”Recording。然后使用Previous和Next。
第三种方法:函数dev.new( )、dev.next( )、dev.prev( )、dev.set( )、dev.off( )

3.2 简单例子

plot(x,y,type="b"):x为横轴,y为纵轴,绘制点击(x,y),type="b"表示同时绘制点和线。
#3.2简单的一个例子
#描述病人对两种药物五个剂量的响应情况
dose <- c(20,30,40,45,60)
drugA <- c(16,20,27,40,60)
drugB <- c(15,18,25,31,40)
plot(dose,drugA,type = "b")
title("药物A的剂量和响应关系")
par(family="PingFangSC-Regular")

R语言实战—03图形初阶_第2张图片

其它类型的绘制图形参数
"p"forpoints,
"l"forlines,
"b"forboth,
"c"for the lines part alone of"b",
"o"for both ‘overplotted’,
"h"for ‘histogram’ like (or ‘high-density’) vertical lines,
"s"for stairsteps,
"S"for othersteps, see ‘Details’ below,
"n"for no plotting.

3.3 图形参数

调用格式:par(optionname=value,optionname=name,…)

no.readonly=TRUE:生成当前图形参数列表。

#修改点的符号
opar <- par(no.readonly = TRUE)
par(lty=2,pch=17)
plot(dose,drugA,type = "b")
par(opar)
#另一种方法:
plot(dose,drugA,type = "b",lty=2,pch=17)

R语言实战—03图形初阶_第3张图片

3.3.1 符号和线条

pch:指定绘制点使用的符号。
cex:指定符号的大小。
lty:指定线条类型。
lwd:指定线条宽度。

R语言实战—03图形初阶_第4张图片
R语言实战—03图形初阶_第5张图片

3.3.2 颜色

col:默认的绘图颜色。
col.axis:坐标轴刻度文字的颜色。
col.lab:坐标轴标签的颜色。
col.main:标题颜色。
col.sub:副标题颜色。
fg:图形的前景色。
bg:图形的背景色。
可以采用颜色下标、颜色名称、十六进制的颜色值、RGB色值、HSV值来表示。例:col=1,col="wihte",col="FFFFFF",col=rgb(1,1,1),col=hsv(0,0,1)
colors( ):查看可用颜色的名称。
rainhbow( )、heat.colors( )、terrain.colors( )、topo.colors( )、cm.colors( ):创建连续型颜色brewer.pal(n,name):创建一个颜色值的向量。
brewer.pal.info或者display.brewer.all():查看所有可选调色板的列表

#生成10阶灰色度
n <- 10
mycolors <- rainbow(n)
pie(rep(1,n),labels = mycolors,col = mycolors)
#生成10阶色度
mygrays <- gray(0:10/10)
pie(rep(1,n),labels = mygrays,col = mygrays)

R语言实战—03图形初阶_第6张图片
R语言实战—03图形初阶_第7张图片

3.3.3 文本属性

用于指定文本大小的参数:
cex:表示相对默认大小缩放倍数的数值。默认为1。
cex.axis:坐标轴刻度文字的缩放倍数。
cex.lab:坐标轴标签的缩放倍数。
cex.main:标题的缩放倍数。
cex.sub:副标题的缩放倍数。
用于指定字体族、字号和字样的参数:
font:整数。用于指定绘图使用的字体样式。1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体
font.axis:坐标轴刻度文字的字体。
font.lab:坐标轴标签的字体。
font.main:标题的字体。
font.sub:副标题的字体。
ps:字体磅值。
family:绘制文本事使用的字体族。标准取值为:serif(衬线)、sans(无衬线)和mono(等宽)。

3.3.4 图形尺寸与边界尺寸

pin:以英寸表示图形尺寸(宽和高)。
mai:以数值向量表示的边界大小(顺序:下、左、上、右,单位为英寸)。
mar:以数值向量表示的边界大小。(单位为英分,默认值为c(5,4,4,2)+0.1)

综合实例:
#3.3.3 综合控制图形外观
dose <- c(20, 30, 40, 45, 60)
drugA <- c(16, 20, 27, 40, 60)
drugB <- c(15, 18, 25, 31, 40)
opar <- par(no.readonly=TRUE)
par(pin=c(2, 3))
par(lwd=2, cex=1.5)
par(cex.axis=.75,font.axis=3)
plot(dose, drugA, type="b", pch=19, lty=2, col="red")
plot(dose, drugB, type="b", pch=23, lty=6, col="blue", bg="green")
par(opar)

R语言实战—03图形初阶_第8张图片
R语言实战—03图形初阶_第9张图片

3.4 添加文本、自定义坐标轴和图例

3.4.1 标题

调用格式:
title(main="main title",sub="subtitle",
xlab="x-axis label",ylab="y-axis label")

注:ann=FALSE移除图形中默认的标题和标签。

3.4.2 坐标轴

格式为:
axis(side, at=, labels=, pos=, lty=, col=, las=, tck=, …)

side:一个整数,表示在图形的那边绘制坐标轴。(下,左,上,右)
at:一个数值型向量,表示需要绘制刻度线的位置。
labels:一个字符型向量,表示置于刻度线旁边的文字标签(NULL,表示直接使用at中的值)
pos:坐标轴线绘制位置的坐标。
lty:线条类型。
col:线条和刻度线颜色。
las:标签是否平行于(=0)或垂直(=2)坐标轴。
tck:刻度线的长度。
注:axes=FALSE将禁止用全部坐标轴。
参数xaxt="n"和yaxt="n"将分别禁用X轴和Y轴。

#3.4.2自定义坐标轴示例
x <- c(1:10)
y <- x
z <- 10/x
opar <- par(no.readonly = TRUE)
par(mar=c(5,4,4,8) +0.1)
plot(x,y,type = "b",
pch=21,col="red",
yaxt="n",lty=3,ann = FALSE)
lines(x,z,type = "b",pch=22,col="blue",lty=2)
axis(2,at=x,labels=x,col.axis="red",las=2)
axis(4,at=z,labels = round(z,digits = 2),
col.axis="blue",las=2,cex.axis=0.7,tck=-.01)
mtext("y=1/x",side = 4,line = 3,cex.lab=1,las=2,col="blue")
title("An Example of Creative Axes",
xlab = "X values",
ylab = "Y=X")
par(opar)

R语言实战—03图形初阶_第10张图片

创建次要刻度线,先安装Hmisc包,在使用minor.tick( )函数。
格式如:minor.tick(nx=n,ny=n,tick.ratio=n)
nx和ny:分别表示X轴和Y轴每两条主刻度线之间通过次要刻度线划分得到的区间个数。
tick.ratio:表示次要刻度线相对于主刻度线的大小比例。

3.4.3 参考线

格式如:abline(h=yvalues,v=xvalues)

3.4.4 图例

格式如:legend(location,title,legend,…)

location:指定图例的位置。
title:图例标题的字符串。
legend:图例标签组成的字符型向量。
horiz=TRUE将会水平放置图例。

#3.4.4图例代码练习
dose <- c(20,30,40,45,60)
drugA <- c(16,20,27,40,60)
drugB <- c(15,18,25,31,40)
opar <- par(no.readonly = TRUE)
par(lwd=2,cex=1.5,font.lab=2)
plot(dose,drugA,type = "b",
pch=15,lty=1,col="red",ylim = c(0,60),
main="Drug A vs. drugB",
xlab="Drug Dosage",ylab="Drug Response")
lines(dose,drugB,type = "b",
pch=17,lty=2,col="blue")
#添加辅助线
abline(h=c(30),lwd=1.5,lty=2,col="gray")
#创建次要刻度
library(Hmisc)
minor.tick(nx=3,ny=3,tick.ratio=0.5)
legend("topleft",inset = .05,title = "Drug Type",c("A","B"),
lty = c(1,2),pch=c(15,17),col=c("red","blue"))
par(opar)


R语言实战—03图形初阶_第11张图片

3.4.5 文本标注

text( )和mtxet( )将文本添加到图形上。

格式为:
text(location,"text to place",pos,…)
mtext("text to place",side,line=n,…)

location:文本的位置参数。
pos:文本相对于位置参数的方位。1=下,2=左,3=上,4=右。offset=作为偏移量,以相对于单个字符宽度的比例表示。
side:指定用来放置文本的边。line=来内移或外移文本。adj=0将文本向左下对齐,adj=1右上对齐。

3.4.6 数字标注

3.5 图形的组合

R中使用函数par( )或layout( )组合多幅图形为一个幅总括图形。
par( )中使用图形参数mfrow=c(nrows,ncols),来创建按行填充的、行数为nrows、列数为ncols的图形矩阵。
layout( )的调用形式为layout(mat),mat是一个矩阵,它指定了所要组合的多个图形的所在位置。
widths= 各列宽度值组成的一个向量
heights= 各行宽度值组成的一个向量

#控制图形的大小
attach(mtcars)
layout(matrix(c(1,1,2,3),2,2,byrow = TRUE),
widths =c(3,1),heights=c(1,2))
hist(wt)
hist(mpg)
hist(disp)
detach(mtcars)

R语言实战—03图形初阶_第12张图片

图形布局的精细控制

图形参数:fig=

#图形布局的精细控制
opar <- par(no.readonly = TRUE)
par(fig=c(0,0.8,0,0.8))
plot(mtcars$wt,mtcars$mpg,
xlab="Mile Per Gallon",
ylab="Car Weight")
par(fig=c(0,0.8,0.55,1),new=TRUE)
boxplot(mtcars$wt,horizontal = TRUE,axes= FALSE)
par(fig=c(0.65,1,0,0.8),new=TRUE)
boxplot(mtcars$mpg,axes=FALSE)
mtext("Enhanced Scatterplot",side = 3,outer = TRUE,line = -3)
par(opar)

R语言实战—03图形初阶_第13张图片

2017年03月22日

作者:壹亮3278(微信号:yiliang3278),移动互联网产品设计、产品经理,数据分析的学习者。不断自我迭代,自我升级,希望和知识爱好者共同进步,让我们用成长去遇见美好的未来!!!

————“自律是成功的基石。”————

《数据分析学习之路系列》系列
大数据之数据分析精进之路:起跑
00-R语言的认识、下载和安装
01-R语言入门
R语言实战—02-创建数据集
第二讲 数据结构入门实战练习

你可能感兴趣的:(R语言实战—03图形初阶)