R语言作图基础

作者: BioLearner | 来源:发表于2019-05-24 17:26 被阅读1次

    本文非原创

    plot(1:20,col="red")   #在一般绘图函数(如plot、boxplot)中,col参数表示颜色
    

    这是一个很好很强大的R颜色列表
    可以直接把那个标号:”#XXXX”用到程序里
    plot(1:20,col="#CDB79E")   # ""不能省
    

    一个极好的R包,RColorBrewer,这个包的功能主要就是提供一些自己已经配好色的R颜色,另外提供一系列颜色的分配,比如你想要从正黄色到正蓝色直接过度10个颜色:
    color<-colorRampPalette(brewer.pal(3,"Blues"))(100)  
    #brewer.pal(3,"Blues")表示蓝色系的3个颜色,3为最小值,使用brewer.pal()需先安装RColorBrewer包,(100)表示将这三个颜色过度成100个
    plot(1:100,col=color,pch=20,cex=2)    #pch表示形状,cex表示大小
    
    这样就从白色到正蓝色划分成100个过渡色
    png("~/plotSamples.png",width=9,height=9,unit="in",res=108)   #在工作目录下创建plotSamples.png图
    par(mfcol=c(2,2))
    color<-colorRampPalette(c("red","yellow","blue"))(30)
    plot(1:30,col=color,pch=20,cex=2,main="1:30")
    plot(1:10,col=color,pch=20,cex=2,main="1:10")
    plot(1:90,col=color,pch=20,cex=2,main="1:90")
    plot(1:900,col=color,pch=20,cex=2,main="1:900")
    dev.off()
    
    RColorBrewer::brewer.pal函数的功能是直接调用这个包已经配好的颜色,其中有一系列名字
    library("RColorBrewer")
    display.brewer.all()   # Show all the colour schemes available
    
    各种配好的色号
    png("~/plotSamples.png",width=9,height=9,unit="in",res=108) 
    par(mfcol=c(1,2))   
    barplot(1:5,col=RColorBrewer::brewer.pal(n = 5,name = "Set2"),main="1:5")
    barplot(1:10,col=RColorBrewer::brewer.pal(n = 8,name = "Accent"),main="1:10")   #注意n不可超过该系列颜色的最大值
    dev.off()
    

    par()函数的参数可见:R 绘图参数设置函数par()详解

    文字

    在图中加一些文字,可以用 text() 函数,在刚才柱状图上加”Hello World!”
    barplot(1:5,col=RColorBrewer::brewer.pal(n = 5,name = "Set2"))
    text(x=4,y=4,labels = "Hello World!",cex=2)   #参数意义见下
    # text()函数中,x代表了横坐标,则4表示写在以第四个bar为中心的位置
    # y代表了高度为4
    # labels即想写的话,可以把任何的字符串嵌进来
    # 最后一个参数是cex,这个是控制字体大小,1是默认值,如果你希望字体放大一倍,就设置为2.
    

    点、线

    点和线是很基础的元素,点的函数是points,线的函数是lines,注意,每一次plot都会展开一副新的图。如果已经用过plot画了一部分图了,还想要继续往图上添加东西,就需要用 points() 或者 lines() 函数,不能重新用plot()

    barplot(1:5,col=RColorBrewer::brewer.pal(n = 5,name = "Set2"))
    points(rep(3,5),pch=20,cex=3,col="orange")     # rep(3,5)表示["3","3","3","3","3"]
    
    在plot或者point的时候,理论上你应该输入x,y两个参数,两者应该是完全对应的,一一对应,前者是横坐标,后者是纵坐标。但是如果你只输入了一批数据,程序就会默认横坐标为1,2,3,4……,纵坐标是你输入的数值。这就是为什么,在这个函数里,我只输入了rep(3,5)而没有输入横坐标。
    barplot(1:5,col=RColorBrewer::brewer.pal(n = 5,name = "Set2"))
    points(rep(3,5),pch=20,cex=3,col="orange")
    lines(sample(1:5),col="gray",lwd=2,lty=2)     sample()表示对向量进行不放回随机抽样
    
    划线使用lines()函数,用法和之前是一样的,如果输入了对应的x,y坐标,就可以直接绘制,如果只输入一个vector,程序就默认横坐标是1,2,3……,此图中,sample(1:5)的值为("3","4","5","1","2"),后面的参数里,lwd控制线的粗细,lty控制线的类型,lty=2意思是虚线。

    标题

    只需在plot或者其他绘图程序里,添加main参数即可
    plot(1:10,main="This is a Title",cex.main=1.5)   #cex.main=1.5表示标题的尺寸是标准值的1.5倍
    标题也可以用text()函数绘制
    

    图例

    通过legend函数我们可以添加图例。
    x <- seq(-pi, pi, len = 65)
    plot(x, sin(x), type = "l", ylim = c(-1.2, 1.8), col = 3, lty = 2)
    points(x, cos(x), pch = 3, col = 4)
    lines(x, tan(x), type = "b", lty = 1, pch = 4, col = 6)
    title("legend(..., lty = c(2, -1, 1), 
           pch = c(NA, 3, 4), merge = TRUE)",
           cex.main = 1.1)
    legend(-1, 1.9, 
           c("sin", "cos", "tan"), 
           col = c(3, 4, 6),
           text.col = "green4", 
           lty = c(2, -1, 1), 
           pch = c(NA, 3, 4),
           merge = TRUE, 
           bg = "gray90")
    

    坐标轴

    plot(1:10,xlab="X lab",ylab="y lab")      #X la、y lab分别是x轴和y轴的参数
    
    如果想要更换坐标轴上的1,2,3,4,5
    plot(1:10, xaxt = "n", xlab='Some Letters')
    axis(1, at=1:10, labels=letters[1:10])
    
    如果想要将坐标轴旋转一些角度
    par(las=2)   #设置坐标标记显示方向。= 0(缺省):平行于坐标轴;= 1:平行于x轴;= 2:垂直于坐标 轴;= 3:平行于y轴
    plot(1:10, xaxt = "n", xlab='Some Letters')      # xaxt="n" 表示禁用x轴的刻度线
    axis(1, at=1:10, labels=letters[1:10])      
    

    构图函数

    在一张图中绘制多张图
    par(mfrow=c(2,3))
    plot(1:10) 
    plot(1:10)
    plot(1:10)
    plot(1:10)
    plot(1:10)
    plot(1:10)
    
    使用par(mfrow=c(2,3))参数中,前一个代表行,后一个代表列,mfrow表示按行排列,把图片分成两行三列。
    另一个很好用的分屏画图的函数layout()
    参数matrix()是矩阵,非0数字代表绘制图形的顺序,相同数字代表占位符;
    ”0”代表空缺,不绘制图形
    
    1、绘制的是3行2列的图像,矩阵按列排序
    attach(mtcars)
    layout(matrix(c(1,1,2,0,3,4), 3, 2))
    #  第一个图形,占据第1列的前2行,对应“1 ,1”;第二个图形对应第1列的最后1行,对应“2”;依次类推
    hist(wt)
    hist(mpg)
    hist(disp)
    hist(carb)
    detach(mtcars)
    
    2、绘制的是3行2列,按行排序
    attach(mtcars)
    layout(matrix(c(1,1,2,0,3,4), 3, 2,byrow = TRUE))
    # 第一个图形,占据第1行,对应“1 ,1”;第二个图形对应第2行的第1行,对应“2”;依次类推
    hist(wt)
    hist(mpg)
    hist(disp)
    hist(carb)
    detach(mtcars)
    

    本文为学习笔记,学习文章:
    R语言中layout()函数的用法
    R极简教程-10:R语言绘图基础

    相关文章

      网友评论

        本文标题:R语言作图基础

        本文链接:https://www.haomeiwen.com/subject/nbewvqtx.html