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-创建数据集
第二讲 数据结构入门实战练习

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容