你的位置:首页 > 数据库

[数据库]R提高篇(二): 图形初阶


目录:

  • 图形示例
  • 图形参数
  • 符号、线条
  • 颜色
  • 文本属性
  • 尺寸与边界
  • 自定义标题
  • 自定义坐标轴
  • 图例
  • 文本标注
  • 图形组合

图形示例


  • 如下代码描述病人对两种药物五个剂量水平上的响应情况
    > mydata <- data.frame(dose=numeric(0),drugA=numeric(0),drugB=numeric(0))> fix(mydata)> mydata
    > save(mydata,file = "mydata.rda") dose drugA drugB1 20 16 152 30 20 183 40 27 254 45 40 315 60 60 40>

  • 创建图形,代码如下:
    with(mydata,{ plot(dose,drugA,type="b")})

  •  图形如下:

图形参数


  • 通过修改参数,可对图形的字体、颜色、坐标轴、标签进行进行修改
  • par(optionname=value, optionname = value ......) , 用这种方式设定的参数除非被修改,否则在会话结束前一直有效
  • par() 生成一个含有当前图形参数设置的列表,添加参数 no.readonly = TRUE 生成一个可修改的当前图形参数列表
  • 如下图:使用虚线和实心三角点,示例代码如下:
    load("mydata.rda")par(no.readonly = TRUE)par(lty=2)par(pch=17)  #这两句等价于:par(lty=2,pch=17)with(mydata,{ plot(dose,drugA,type="b")  #使用par参数等价于plot(dose,drugA,type="b",lty=2,pch=17)    })

  • 生成图例如下:

 符号和线条


  1. pch:  指定绘制点时使用的符号,如下图:
  2. cex: 指定符号的大小,是一个数值,表示绘图符号相对于默认大小的缩放比例
  3. ltype: 指定线条类型,如下图:
  4. lwd: 指定线条宽度,相于于默认值1的倍数,如:2, 0.5等

 颜色


  • R中,可通过颜色下标(如:col =1 )、颜色名称(col="Red")、十六进制(col="#FFFF")、RGB值(col=rgb(1,1,1))、HSV值(col=hsv(0,0,1))来指定颜色
  • 颜色参数如下:
    1. col:            默认的绘图颜色
    2. col.axis:    坐标轴刻度文字的颜色
    3. col.lab:     坐标轴标签(名称)的颜色
    4. col.main:  标题颜色
    5. col.sub:    副标题颜色
    6. fg:            图形的前景色
    7. bg:           图形的背景色

文本属性


  • 指定文本大小参数
    1. cex.axis:          坐标刻度文字的缩放倍数
    2. cex.lab:           坐标标签的缩放倍数
    3. cex.main:        标题的缩放倍数
    4. cex.sub:          副标题的缩放倍数
  • 指定文件字体样式:
    1. font:             整数,1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体
    2. font.axis:      坐标刻度文字的字体样式
    3. font.lab:      坐标标签的字体样式
    4. font.main:     标题的字体样式
    5. font.sub:       副标题的字体样式
    6. ps:                字体磅值

尺寸与边界


  • 尺寸与边界参数:
    1. pin:       以英寸表示图形的尺寸(宽和高)
    2. mai:      在数值向量表示边界大小,顺序为:下、左、上、右,单位为英寸
    3. mar:      在数值向量表示边界大小,顺序为:下、左、上、右,单位为英分(一英分 = 1/12 英寸,相当于0.21厘米)
  • 示例代码及图例:
    setwd("E:\\R")load("mydata.rda")par(no.readonly = TRUE)par(pin=c(2,3),lwd=2,cex=1.5,cex.axis=0.75,font.axis=3)with(mydata,{ plot(dose,drugA,type="b",pch=19,lty=2,col="red") plot(dose,drugB,type="b",pch=23,lty=6,col="blue",bg="green")})

  • 图形大小宽高为:2英寸、3英寸,线条宽度为默认2位、符号为默认1.5倍、坐标轴文字设置为粗体,大小缩小为75%,par设定的参数对两张图均有效,plot中的参数仅对特定图形有效

自定义标题


  • title()一般用于添加信息到一个默认标题和坐标轴标签被 ann=FALSE 选项移除的图形中
  • 示例代码和图形:
    load("mydata.rda")with(mydata,{ plot(dose,drugA,type="b",pch=19,lty=2,ann=FALSE) title(main="hello",sub="demo",col.main="red",col.sub="green",xlab = "jl",ylab="fy")})

  • 示例结果

自定义坐标轴


  • axis()用来自定义坐标轴,而非使用R中的默认坐标田轴
  • 语法: axis(side, at = NULL, labels = TRUE, pos = NA, las=, ...)
  • 参数说明如下:
    1. side:   表示在图形的哪边绘制坐标轴: 1=下,2=左,3=上,4=右
    2. at:      一个数值型向量,表示需要绘制刻度线的位置
    3. labels: 字符向量,表示置于刻度线旁边的文字标签
    4. las:     标签是否平行于(=0)或垂直于(=2)于坐标轴
  • 示例代码:
    with(mydata,{ plot(dose,drugA,type="b",pch=19,lty=2,yaxt="n") axis(2,at=c(20,30,40,50,60),labels = c('A','B','C','D','E'),las=2,col="blue")})

  • 注意:创建自定义坐标时,应当禁用自动生成的坐标轴
    1. axes = FALSE 将禁用全部的坐标轴(包括坐标轴框架线、除非添加参数 frame.plot = TRUE)
    2. xaxt = "n" 和 yaxt = "n" 将分别禁用X轴和Y轴(会留下框架线、只是去除了刻度)

 图例


  • legend(): 当图形中有多组数据时,图例可帮助每个图形代表的数据
  • 语法:legend(location,title,legend,........)
  • 参数说明:
    1. location:   图例显示位置,可使用关键字:bottom、bottomleft、left、topleft、top、topright、right、bottomright、center, 使用 inset=指定图例内侧移动的大小 (以绘图区域大小分数表示)
    2. title:          可选项,图例标题
    3. legend:      图例标签组成的字符串向量
    4. ......
  • 示例代码:
    setwd("E:\\R")load("mydata.rda")dose <- mydata$dosedrugA <- mydata$drugAdrugB <- mydata$drugBplot(dose,drugA,type="b", pch=15,lty=1,col="red",ylim = c(0,60),main="Drug A vs.Drug B",xlab = "Drug dosage",ylab="drug Repsponse")lines(dose,drugB,type = "b",pch=17,lty=2,col="blue")abline(h=c(30),lty=2,lwd=1.5,col="gray")legend("topleft",inset = 0.05, title = "drug Type",legend = c("A","B"),lty=c(1,2),pch=c(15,17),col=c("red","blue"))

  • 展现结果如下图:
  • abline(): 参考线函数,语法:abline(h=yvalues, v=xvalues)

文本标注


  • text():   向绘图区域内添加文本
  • mtext(): 向图形的四个边角之一添加文本
  • 语法: text(location, "text to place", pos, .....)
  • 参数解释:
    1. location:   文本的位置参数
    2. pos:           文本相对于位置参数的方位,1=下,2=左,3=上,4=右, 可同时配合参数 offset=作为偏移量
  • 示例代码:
    wt <- mtcars$wtmpg <- mtcars$mpgplot(wt,mpg,main="Mileage vs. Car weight",xlab="weight",ylab="Mileage",pch=18,col="blue")text(wt,mpg,row.names(mtcars),cex = 0.5, pos=4,offset = 0.4,col="red")

  • 显示效果图如下:

图形组合


  • 使用par() 、layout()比较容易组合多幅图为一幅总括图
  • par()使用mfrow=c(nrows,ncols) 创建按行填充的图形矩阵, mfcol=c(nrows,ncols) 按列填充矩阵
  • 示例代码:
    attach(mtcars)opar <- par(no.readonly = TRUE)par(mfrow=c(2,2))plot(wt,mpg,main="Demo1")plot(wt,disp,main="Demo2")hist(wt,main="demo3")boxplot(wt,main="demo4")par(opar)detach(mtcars)

  • 结果示例:
  • layout() 调用 layout(mat),其中 mat是一个矩阵,它指定要组合的多个图形所在的位置
  • 示例代码:
    attach(mtcars)layout(matrix(c(1,1,2,3),nrow = 2,ncol = 2,byrow = TRUE))hist(wt,main = "demo1")hist(mpg,main = "demo2")hist(disp,main = "demo3")detach(mtcars)

  • 示例结果显示



深圳旅游哪里好玩呢深圳免费旅游景点大全深圳市周边旅游景点深圳旅游哪家旅行社好深圳一日游攻略大全苏州三山岛 悠游诗画中 2015清远牛鱼嘴三八妇女节门票优惠活动?牛鱼嘴3.8女士门票价格? 千泷沟大瀑布交通?从化千泷沟大瀑布有直达车吗? 千泷沟大瀑布简介?从化千泷沟大瀑布有哪些好玩的? 秋日漫步街头 大连八大地标建筑推荐 组图:天气微凉好个秋 安徽赏秋好时节 盘点南昌十大新地标 各有各的美 寻找那些海南也有的“异国”美景 汕头中信度假村搭帐篷收费吗?中信度假村帐篷租多少钱? 汕头中信度假村有什么好玩的?中信度假村游玩项目介绍? 五桂山仙踪龙园电话?中山五桂山仙踪龙园最新价格? 中山市五桂山仙踪龙园路线?五桂山仙踪龙园怎么去? 分界洲岛门票价格?三亚分界洲岛门票包含什么? 猴岛身份证本地门票打折吗?海南猴岛最新票价? 海南身份证去猴岛多少钱?南湾猴岛凭海南身份证门票优惠吗? 南湾猴岛可以带推车上去吗?海南南湾猴岛有观光车吗? Q65110A9074 Datasheet Q65110A9074 Datasheet Q65110A9075 Datasheet Q65110A9075 Datasheet Q65110A9079 Datasheet Q65110A9079 Datasheet 九寨沟旅游最佳时间 九寨沟旅游最佳时间 九寨沟旅游最佳时间 鼓浪屿在哪里 鼓浪屿在哪里 鼓浪屿在哪里 云南西双版纳 云南西双版纳 云南西双版纳