美文网首页
R--创建图形

R--创建图形

作者: KevinCool | 来源:发表于2016-03-17 10:51 被阅读346次

    手动输入数据

    mydata<-data.frame(age=numeric(0),gender=numeric(0),weight=numeric(0))
    mydata<-edit(mydata)
    #使用edit()可以手动输入数据,并且还可以改变列名什么的
    
    #值标签
    patientdata$gender<-factor(patientdata$gender,levels=c(1,2),labels=c("males","female"))
    #使用levels和labels相互对应,创建字符型向量的值标签```
    
    #创建图形
    

    weight<-c(32,43,23,43)
    mpg<-c(12,21,9,22)
    mtcars<-data.frame(weight,mpg)

    将绘图语句夹在开启图形设备和关闭图形设备之间即可输出图形

    pdf("mygraph.pdf")
    attach(mtcars)
    plot(weight,mpg)
    abline(lm(mpg~weight))
    title("regression of mpg on weight")
    detach(mtcars)
    dev.off()```

    简单的绘图例子

    dose<-c(20,30,40,45,60)
    drugA<-c(16,20,27,40,60)
    drugB<-c(15,18,25,31,40)
    #"p" for points,"l" for lines,"b" for both
    dev.new()
    plot(dose,drugA,type="b")
    
    #dev.new()必须在设置参数之前,要不然就会使用默认参数重新绘图
    dev.new()
    opar<-par(no.readonly=TRUE)
    #这种是指定全局参数
    par(lty=2,pch=17)
    #指定坐标轴标签字体为斜体,标题为粗斜体
    par(font.lab=3,cex.lab=1.5,font.main=4,cex.main=2)
    plot(dose,drugA,type="b")
    title("the influence of the drugA")
    par(opar)
    #为高级绘图函数指定参数,只对这幅图有效
    dev.new()
    plot(dose,drugA,type="b",lty=2,lwd=2,pch=17,cex=1.5)
    #lwd指定线宽,相对大小,cex指定符号的大小,具体代表值查书45页
    dev.new()
    plot(dose,drugA,type="b",lty=3,lwd=3,pch=15,cex=2)```
    
    #指定颜色
    

    n<-10
    mycolors<-rainbow(n)

    pie() draw a pie chart,labels are the names of the colors

    dev.new()
    pie(rep(1,n),labels=mycolors,col=mycolors)

    rep(1,n) replicates the values in x for n times and generates a vector as [1,1,...,1]

    mygrays<-gray(0:n/n)
    dev.new()
    pie(rep(1,n),labels=mygrays,col=mygrays)

    first par in pie as a vector of non-negative numerical quantities.

    and the values in x are displayed as the areas of pie slices.```

    设置图形尺寸pin,mai,mar

    dose<-c(20,30,40,45,60)
    drugA<-c(16,20,27,40,60)
    drugB<-c(15,18,25,31,40)
    #返回一个可以修改的当前图形参数的列表
    opar<-par(no.readonly = TRUE)
    #pin返回图形大小
    par(pin=c(2,3))
    par(lwd=2,cex=1.5)
    par(cex.axis=.75,font.axis=3)
    plot(dose,drugA,type="b",pch=19,lty=2,col="red")
    plot(dose,drugB,type = "b",pch=23,lty=6,col="blue",bg="green")
    #bg是来设置绘制符号的背景色的
    par(opar)```
    
    #使用高级绘图函数内置参数设置标题,坐标轴等
    

    plot(dose,drugA,type = "b",col="red",lty=2,pch=2,lwd=2,
    main="Clinical Trials for Drug A",
    sub="This is hypothetical data",
    xlab = "Dosage",ylab = "Drug Response",
    xlim = c(0, 60),ylim = c(0,70))
    plot(dose,drugB,type="b",col="blue",lty=2,pch=2,lwd=2,
    main="Clinical Trials for Drug B",
    sub="This is hypothetical data",
    xlab = "Dosage",ylab = "Drug Response",
    xlim=c(0,60),ylim = c(0,70))

    设置参数分别是颜色,线型,绘图标志,线宽,主标题,副标题,x轴标签,y轴标签,x轴的坐标范围,y坐标范围```

    使用title()函数,运行位置是在绘图之后进行添加的

    #高级函数包含了标题或者标签,使用par(ann=FALSE)或者在绘图函数中使用ann=FLASE来移除
    #par(ann=FALSE)
    plot(dose,drugA,ann=FALSE)
    title(main="my title",col.main="red",
          sub="my sub title",col.sub="blue",
          xlab="my x label",ylab="my ylabel",col.lab="green",
          cex.lab=.75)
    par(opar)```
    
    #自定义坐标轴axis(),
    

    side表示在图形哪边绘制坐标轴,1234,下左上右,

    at绘制刻度线的位置,输入是向量

    labels表示刻度线旁边的标签

    las表示标签垂直2还是平行0于坐标轴,tck图形内侧正值还是外侧负值默认-0.01

    pdf("mydata.pdf")
    x<-c(1:20)
    y<-x
    z<-20/x

    opar<-par(no.readonly = TRUE)
    par(mar=c(5,4,4,8)+0.1)

    绘制一条直线,yaxt表示禁用y轴刻度,ann禁用默认标签

    plot(x,y,type = "b",pch=21,col="red",yaxt="n",lty=3,ann=FALSE)

    绘制20/x线,lines()为一幅现有的图添加新的图形元素

    lines(x,z,type="b",pch=22,col="blue",lty=2)
    axis(2,at=x,labels=x,col.axis="red",las=2)

    slices<-z[c(1,11,13,15,17,19)]

    axis(4,at=z,labels = round(z,digits = 2),col.axis="blue",las=2,cex.axis=0.7,tck=-0.01)

    line是控制文字内移还是外移,数字越大,越往外

    mtext("y=1/x",side=4,line=2,cex.lab=1,las=2,col="blue")
    title("An example of creative axes",xlab = "x values",ylab="y=x")
    library(Hmisc)

    使用次要刻度线,nx=2表示将2个刻度线之间分为两个区间,也就是加一条次要刻度线

    minor.tick(nx=2,ny=3,tick.ratio = 0.5)
    par(opar)
    dev.off()```

    参考线和图例,abline(),legend()

    #这里是指定x与x轴垂直的参考线,abline(h=yvalues,v=xvalues)
    abline(x=seq(1,10,2),lty=2,col="blue")
    #在x为1,3,5,7,9的位置添加了垂直的蓝色虚线
    pdf("mylegend.pdf")
    dose<-c(20,30,40,45,60)
    drugA<-c(16,20,27,40,60)
    drugB<-c(15,18,25,31,40)
    
    opar<-par(no.readonly = TRUE)
    par(lwd=2,cex=1.5,font.lab=2)#粗体字
    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 Response")
    #增加第二个线条
    lines(dose,drugB,type="b",pch=17,lty=2,col="blue")
    abline(h=c(30),lwd=1.5,lty=2,col="gray")
    library(Hmisc)
    #加入次要刻度线
    minor.tick(nx=3,ny=3,tick.ratio = 0.5)
    #inset表示向内侧移动的大小,按照全图比例来说,legend参数表示图例标签
    legend("topleft",inset=0.05,title="Drug Type",legend=c("A","B"),
           lty=c(1,2),pch=c(15,17),col=c("red","blue"))
    par(opar)
    dev.off()```
    
    #文本标注,绘图区域内部text()和mtext()图形的四个边界添加文本
    

    text(wt,mpg,row.names(mtcars),cex=0.6,pos=4,col="red")

    使用wt,mpg作为标注的x,y坐标,row.names作为标记文本内容,cex作为调整字号,pos作为文本位置,1234下左上右,col为颜色

    pdf("mytext.pdf")
    opar<-par(no.readonly = TRUE)
    par(cex=1.5)
    plot(1:7,1:7,type="n")
    text(3,4,"example of default text")
    text(4,5,family="mono","example of default text")
    text(6,6,"say you love me",cex=0.6,pos=1,col="blue")
    par(opar)
    dev.off()```

    图形的组合,par(mfrow=c(2,2)),按行填充,mfcol按列填充

    par(mfrow=c(2,2))
    #后面是画的图,plot或者hist等函数,就会自动的填充到这个组合图形中
    par(mfcol=c(3,1))
    
    pdf("mylayout.pdf")
    wt<-c(12,32,43,54,64)
    mpg<-c(23,43,34,53,23)
    disp<-c(1,2,3,4,5)
    #layout(matrix(c(1,1,2,3),2,2,byrow=TRUE))
    #表示宽两个图第一个占3份,第二个占1份,高度第一个占1份,第二个占2份
    layout(matrix(c(1,1,2,3),2,2,byrow=TRUE),widths = c(3,1),heights = c(1,2))
    #按行填充3行一列
    #par(mfrow=c(3,1))
    #par(mfrow=c(2,2))
    hist(wt)
    hist(mpg)
    hist(disp)
    dev.off()```
    
    #图形的精细控制
    

    使用par的fig参数进行控制

    pdf("myfig.pdf")
    wt<-c(12,32,43,54,64)
    mpg<-c(23,43,34,53,23)
    disp<-c(1,2,3,4,5)
    opar<-par(no.readonly = TRUE)
    par(fig=(c(0,0.8,0,0.8)))
    plot(wt,mpg,xlab = "miles per gallon",ylab = "car weight")
    par(fig=c(0,0.8,0.55,1),new=TRUE)
    boxplot(wt,horizontal=TRUE,axes=FALSE)

    fig=默认会新建一幅新的图形,所以在添加一幅图到现有的图形的时候,设定参数new=TRUE

    par(fig=c(0.65,1,0,0.8),new=TRUE)
    boxplot(mpg,axes=FALSE)

    outer表示use outer margins if available,line:on which margin line,starting at 0 counting out wards

    mtext("enhanced scatterplot",side=3,outer=TRUE,line=-3)
    par(opar)
    dev.off()```

    创建图形

    #创建图形最基本的函数plot()
    #plot是一个泛型函数,真正被调用的函数依赖于对象所属的类
    plot(c(1,2,3),c(4,2,5))
    #plot是分若干阶段执行的,这样就可以用一系列命令分若干步来构建一幅完整的图形
    #首先可以绘制空白图形,向其中添加坐标轴
    #type="n"表示不要给图中添加任何元素
    #绘制坐标轴,这样确定了坐标轴的范围
    #其实这样是随着数据点而变化的
    plot(c(-5,3),c(-1,6),type="n",xlab="x",ylab="y")
    x <- c(1,2,3)
    y <- c(1,3,8)
    #只是添加了3个点
    plot(x,y)
    #abline()函数添加线
    #计算线性回归
    lmout <- lm(y~x)
    abline(lmout)```
    
    #abline函数
    

    参数是斜率和截距,lmout里面的lmout$coefficients中就包含了斜率与截距

    abline(c(2,1))```

    lines函数

    #使用lines函数先向图形添加点,然后用直线将其连起来
    lines(c(1.5,2.5),c(2,3))
    
    #只画出线条不需要点,使用参数type="l"
    plot(x,y,type="l")```
    
    #指定线型
    

    help("par"),中lty参数,0是空白,1是实线,2是虚线等等

    plot(x,y,type="l",lty=2)```

    在现有图形基础上新增绘图窗口

    #Linux下X11(),windows下windows()
    hist(x)
    windows()
    hist(y)```
    
    #points函数
    

    向现有的图形中添加一系列的点对x,y,输入可以是向量,绘图将一一对应

    points(x,y,pch="+")```

    legend()函数

    #为拥有多条曲线的图中添加图例```
    
    #text()函数
    

    在图形的任意位置加上一些文字

    text(2.5,4,"abc")

    字符串的中心,b刚好位于点2.5,4

    text()函数和locator函数结合使用

    text(locator(1),"i love you")```

    locator()函数

    #精确定位
    locator(1)```
    
    #定制图形
    

    cex选项

    用于放大或者缩小图形中的字符

    text(locator(1),"love",cex=1.5)```

    R图形设备

    pdf("12.pdf")
    #显示图形设备列表
    dev.list()
    #RStudioGD图形设备编号是2,pdf编号是3
    #显示活动设备
    dev.cur()
    #保存已经显示的图形
    #方法是将当前屏幕设置为活动设备,然后将内容复制到PDF设备上
    dev.set(2)
    dev.copy(which=4)
    #关闭R图形设备
    #创建的pdf文件必须在关闭设备之后才能正常使用
    dev.off()```
    

    相关文章

      网友评论

          本文标题:R--创建图形

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