zoukankan      html  css  js  c++  java
  • R-plot

    颜色、图例和线

    在散点图中添加信息、图例以及回归线。

    模拟数据

    #模拟数据
    dat <- data.frame(X = runif(100,-2,2),T1 = gl(n=4,k=25,labels = c("Small","Medium","Large","Big")),Site = rep(c("Site1","Site2"),time = 50))
    mm <- model.matrix(~Site+X*T1,dat)
    betas <- runif(9,-2,2)
    dat$Y <- rnorm(100,mm%*%betas,1)
    summary(dat)

    添加颜色
    给plot的col参数传递一个颜色向量

    #选择需要使用的颜色
    library(RColorBrewer)
    #RColorBrewer中的所有调色板
    display.brewer.all()
    #选取Set1调色板中的四种颜色
    cols <- brewer.pal(n=4,name="Set1")
    #cols表示的是四种不同颜色的名称
    #创建一个跟T1变量的因子水平相对应的颜色向量
    cols_t1 <- cols[dat$T1]
    
    plot(Y~X,dat,col=cols_t1,pch=16)

    更改图形符号
    创建图形符号向量,用来标记两种不同的Site

    pch_site <- c(16,18)[factor(dat$Site)]
    #pch参数用来控制图形符号
    plot(Y~X,dat,col=cols_t1,pch=pch_site)

    添加图例

    legend函数的第一个参数指定图例显示在图形中位置,接着是图例文本。通过设置xpd=TRUE可以在图形外增加图例。并指定x,y坐标轴

    plot(Y~X,dat,col=cols_t1,pch=pch_site)
    legend("topright",legend = paste(rep(c("Small","Medium","Large","Big"),times=2),rep(c("Site 1","Site 2"),each=4),sep = ", "),col = rep(cols,times=2),pch = rep(c(16,18),each=4),bty = "n",ncol = 2,cex = 0.7,pt.cex = 0.7,xpd = TRUE)

    添加回归线

    new_X<-expand.grid(X=seq(-2,2,length=10),T1=c("Small","Medium","Large","Big"),Site=c("Site1","Site2"))
    m<-lm(Y~Site+X*T1,dat)
    pred<-predict(m,new_X)
    xs<-seq(-2,2,length=10)
    plot(Y~X,dat,col=cols_t1,pch=pch_site)
    lines(xs,pred[1:10],col=cols[1],lty=1,lwd=3)
    ...
    lines(xs,pred[31:40],col=cols[4],lty=1,lwd=3)
    lines(xs,pred[41:50],col=cols[1],lty=2,lwd=3)
    ...
    lines(xs,pred[71:80],col=cols[4],lty=2,lwd=3)
    legend(x=-1,y=13,legend=paste(rep(c("Small","Medium","Large","Big"),times=2),rep(c("Site 1","Site 2"),each=4),sep=", "),col=rep(cols,times=2),pch=rep(c(16,18),each=4),lwd=1,lty=rep(c(1,2),each=4),bty="n",ncol=2,cex=0.7,pt.cex=0.7,xpd=TRUE)

    坐标轴

    坐标轴标题和标签
    新建绘图数据并得到默认设置的图形:

    #新建数据
    x<-1:100
    y<-runif(100,-2,2)
    #得到的默认设置的图形
    plot(x,y)
    #修改坐标轴标题
    plot(x,y,xlab="Index",ylab="Uniform draws")

    图形设置通过par函数来实现

    #修改轴标签和轴标题的尺寸
    op<-par(no.readonly=TRUE) #保存默认设置
    par(cex.lab=1.5,cex.axis=1.3)
    plot(x,y,xlab="Index",ylab="Uniform draws")
    #为了得到大尺寸的轴标题和标签,需要预留更大的空间
    par(mar=c(6,6,3,3),cex.axis=1.5,cex.lab=2)
    plot(x,y,xlab="Index",ylab="Uniform draws")

    通过axis函数可以对坐标轴做更多设置。他可以用来控制在哪些坐标值处绘制刻度线,刻度线下放置轴标签,轴线的类型和宽度,刻度线宽度,轴线和刻度线的颜色:

    #利用axis函数对坐标轴作进一步的设置
    par(op) #重置为默认设置
    plot(x,y,xaxt="n") #不绘制x轴标签
    axis(side=1,at=c(5,50,100)) #在x轴的5,50,150处绘制刻度线
    #在刻度线处指定标签
    plot(x,y,yaxt="n")
    axis(side=2,at=c(-2,0,2),labels=c("Small","Medium","Big"))
    #设置坐标轴线和标签
    plot(x,y)
    axis(side=3,at=c(5,25,75),lwd=4,lwd.ticks=2,col.ticks="red")
    #移除图形四周的边框,只显示坐标轴线
    plot(x,y,bty="n",xaxt="n",yaxt="n")
    axis(side=1,at=seq(0,100,20),lwd=3)
    axis(side=2,at=seq(-2,2,2),lwd=3)

    R图形有四个面,底部是起始位置,并按顺时针方向计数(即side=3是在顶部)

    刻度线
    精细化的控制刻度线,它可以通过par函数或axis函数来实现。


    Copyright © 吴华锦
    雅致寓于高阁渔舟唱晚,古典悠然
    格调外发园林绿树萦绕,馥郁清香
  • 相关阅读:
    Spring@Profile注解
    day 32 子进程的开启 及其用法
    day 31 udp 协议SOCK_DGRAM
    day 30 客户端获取cmd 命令的步骤
    day 29 socket 理论
    day 29 socket 初级版
    有关 组合 继承
    day 27 多态 接口 类方法 静态方法 hashlib 摘要算法模块
    新式类和经典类的区别
    day 28 hasattr getattr serattr delattr 和带__内置__ 类的内置方法
  • 原文地址:https://www.cnblogs.com/hanqing/p/5479785.html
Copyright © 2011-2022 走看看