R语言实战—03图形初阶


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")

其它类型的绘制图形参数
"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)

3.3.1 符号和线条

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

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)

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)

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)

创建次要刻度线,先安装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)


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)

图形布局的精细控制

图形参数: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)

2017年03月22日

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

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

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

推荐阅读更多精彩内容

  • 感谢Robert I.Kabacoff 著作本书,同时感谢高涛、肖楠、陈钢编译此书。 最近在学习《R语言实战》,...
    拿笔的小鑫阅读 842评论 2 8
  • 图形初阶 使用图形 R是一个惊艳的图形构建平台。这里我特意使用了“构建”一词。在通常的交互式会话中,你可以通过逐条...
    cppcwang阅读 54评论 0 0
  • 3.1使用图形 R是一个惊艳的图形构建平台。这里我特意使用了构建一词。在通常的交互式会话中,你可以通过逐条输入语句...
    白马少年说阅读 1,376评论 4 5
  • par()修改图形参数 我们可以通过修改图形参数的选项来自定义一幅图形的多个特征,如字体、颜色、坐标等。常用的方式...
    jlyq617阅读 225评论 0 3
  • 终于抽出一点空闲时间来对做了两个月的红樱桃小事业做个简单的总结!养成总结的好习惯,会让自己对现阶段的把握,和下阶...
    呆萌的晨小主阅读 113评论 0 0