美文网首页
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--创建图形

    手动输入数据 weight<-c(32,43,23,43)mpg<-c(12,21,9,22)mtcars<-da...

  • (4)Linux_权限

    权限 UGO权限 对 root账号 不起作用 1. ll /etc/group:- rw- r-- r-- (总共...

  • R003 基础画图

    1. 图形创建及保存 1.1 图形创建 1.2 创建新的图形窗口 在通过执行如plot()、hist()(绘制直方...

  • Python 常用库总结(3)

    图形用户界面 用来创建图形用户界面程序的库。 curses:内建的 ncurses 封装,用来创建终端图形用户界面...

  • 如何在iOS上创建矢量图形

    如何在iOS上创建矢量图形 如何在iOS上创建矢量图形

  • R语言实战04-图形初阶

    今天我们来的学习创建和保存图形以及图形参数; 1、创建和保存图形 附图 除了pdf(), 还有win.metafi...

  • opencv(3)绘制图案

    本章使用opencv创建图形 采用numpy创建图纸

  • Day15-操作系统文件属性(3)

    文件属性详细说明:文件权限rw- r-- r-- 文件权限包含9个权限位 12位权限属主: (r 读) (w 写)...

  • R语言基础图形综述

    R语言基础图形分为创建图形与添加图形内容。 创建图形条形图饼图直方图核密度图箱线图点图散点图折线图相关图马赛克图 ...

  • SQL Server 2016 表操作:表创建

    图形界面创建表 SQL 脚本创建表 语法

网友评论

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

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