zoukankan      html  css  js  c++  java
  • R提高篇(二): 图形初阶

    目录:

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

    图形示例


    • 如下代码描述病人对两种药物五个剂量水平上的响应情况
      > mydata <- data.frame(dose=numeric(0),drugA=numeric(0),drugB=numeric(0))
      > fix(mydata)
      > mydata
      > save(mydata,file = "mydata.rda") dose drugA drugB
      1 20 16 15 2 30 20 18 3 40 27 25 4 45 40 31 5 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$dose
      drugA <- mydata$drugA
      drugB <- mydata$drugB
      plot(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$wt
      mpg <- mtcars$mpg
      plot(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)
    • 示例结果显示
  • 相关阅读:
    JBDC链接数据库
    js操作BOM对象
    打印倒正三角形
    window.onload事件
    js动态改变样式属性(className属性)
    js动态改变样式属性(style属性)
    js操作DOM对象(节点的增删改)
    easygen通用代码生成框架[开源]
    什么是真正的幸福与成功
    JVM学习笔记八:线程安全与锁优化
  • 原文地址:https://www.cnblogs.com/tgzhu/p/5942137.html
Copyright © 2011-2022 走看看