本博文源于R语言基础,旨在研究R中plot函数图形参数如何修改。要想讲清楚这个问题,那就首先用一个例子引入
例子:采用图形描述病人对两种药物五个剂量水平上的响应情况
首次绘图的plot
> dose <- c(20,30,40,45,60)
> drugA <- c(16,20,27,40,60)
> drugB <- c(15,18,25,31,40)
> plot(dose,drugA,type='b')
这是我们初级版本画的图形,如果想要给图形加上修饰,往下面翻阅,不断地图形参数做出调整就能画出花里胡哨的图片了。
符号和线条
指定符号和线条类型的参数
其中pch参数
其中lty参数
根据所知道的,加上上面的R代码,我们可以画出这样的图:
例子:画出lty=2,pch=17的图
plot(dose,drugA,type='b',lty=2,pch=17)
颜色
指定颜色的含义就是我们想要我们的图形和修饰是什么颜色。参数如下
但是我们如何表达出我想要表达出颜色呢?就是采用较为常见的颜色方式,比如:十六进制的颜色值或者RGB或者HSV,下面罗列一二:
- col = “white”
- col = “#FFFFFF”
- col = rgb(1,1,1)
- col = hsv(0,1,1)
例子:将绘图的颜色改为蓝色
plot(dose,drugA,type='b',lty=2,pch=17,col='blue')
文本属性
这个就是用来指定字号、字体和字样。用于控制文本大小的参数。
参数 | 描述 |
---|---|
cex | 表示相对于默认大小缩放倍数的数值。默认大小为1,1.5表示放大默认值的1.5,0.5就是缩小为默认值的50%.等等 |
cex,axis | 坐标轴刻度文字的缩放倍数,作用类似于cex |
cex.lab | 坐标轴标签(名称)的缩放倍数,类似于cex |
cex.main | 标题的缩放倍数。类似于cex |
cex.sub | 副标题的缩放倍数。类似于cex |
谈到文本,字体也不例外
例子:请将坐标轴标签名称放大1.5倍,字体样式为粗斜体
plot(dose,drugA,type='b',cex.lab=1.5,font.main=4)
图形尺寸和边界尺寸
这个参数限制图形的宽高,也都有参数可以设定。
例子:绘出宽4英寸和高3英寸的图形
plot(dose,drugA,type='b',pin=c(4,3))
添加文本、自定义坐标轴和图例
大家有了上面的基础,然后只需要知道什么写进参数就行了。下面的参数就是添加标题、副标题、坐标轴标题、坐标轴范围:
参数 | 含义 |
---|---|
main | 标题 |
sub | 副标题 |
xlab | x坐标标题设置 |
ylab | y坐标轴标题设置 |
xlim | x坐标轴范围 |
ylim | y坐标轴范围 |
例子:请绘出标题“Clinical Trials for DrugA”,副标题“This is hypothetical data”x坐标标题为“Dosage”,y坐标标题为“Drug Response”,x轴范围(0,60),y轴范围(0,70)
> plot(dose,drugA,type='b',main="Clinical Trials for DrugA",sub="This is hypothetical data",xlab="Dosage",ylab="Drug Response",xlim=c(0,60),ylim = c(0.,70))
标题
与上面在plot函数设置为,也可以专门用title添加,参数与上面<添加文本>小节类似
例子:请添加标题“Clinical Trial for DrugB”
博主的图形刚才在绘制图形出现了重合,不知道大家有没有,出现重合不要着急,重新使用plot绘制没有标题的图形,然后用title加上标题。
title(main="Clinical Trial for DrugB")
坐标轴
坐标轴当然可以自己设置甚至自己定义。函数如下:
axis(.....)
例子:自定义坐标轴,绘出下图的图形
>
> x <- c(1:10)
> y <- x
> z <- 10/x
> opar <- par(no.readonly = TRUE)
> par(mar=c(5,4,4,8)+0.1)
> plot(x,y,type='b',pch=21,col='red',yaxt="n",lty=3,ann=FALSE)
> lines(x,z,type='b',pch=22,col="blue",lty=2)
> axis(2,at=x,labels = x,col.axis="red",las=2)
参考线
这里的参考线就相当于在原有的基础上增加线,R中用abline实现
abline(h=yvalues,v=xvalues)
例子:请在原图形上增加y=1,2,3的参考线
abline(h=c(1,2,3))
图例
所谓的图例就是指当多条图形在一张图形上面,我们为其增加设置便以区分。函数legend()
legend(location,title,legend,...)
例子:利用图例,请绘出此类图形
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="DrugA vs. DrugB",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')
> legend('topleft',inset=.05,title = "Drug Type",c('A','B'),lty=c(1,2),pch=c(15,17),col=c('red','blue'))
> library(Hmisc)
> minor.tick(nx=3,ny=3,tick.ratio = 0.5)
> par(opar)