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 © 吴华锦
    雅致寓于高阁渔舟唱晚,古典悠然
    格调外发园林绿树萦绕,馥郁清香
  • 相关阅读:
    nvidia-smi电源显示ERR (Pwr:Usage ERR)
    阿里云windows安装ftp
    ansible常用模块
    ansible playbook
    ansible Inventory
    ansible安装
    ansible命令
    ansible配置文件
    js插件中提示框含有 或者<br/>显示不成换行怎么办,改样式
    [转] react项目安装及运行
  • 原文地址:https://www.cnblogs.com/hanqing/p/5479785.html
Copyright © 2011-2022 走看看