一般R作图有三大绘图系统:base系统、ggplot2绘图系统、lattice绘图系统。
本篇主要介绍base系统绘图时的图形参数。一般用plot()函数来完成。在R中,若画的图不止一副,执行plot语句时会自动覆盖前一副,如何才能创建多个图形呢?可以在作图之前添加:dev.new()。
下面通过几个图例来介绍图形参数。
dose <- c(20,30,40,45,60)
dragA <- c(16,20,27,40,60)
dragB <- c(15,18,25,31,40)
①plot(dose, dragA, type = "b") #(默认
lty=1,pch=1
)(
type = "b"表示同时绘制点和线
)
其中pch表示
点符号
,具体见下图:
lty表示
线条类型
,具体见下图:
附上令外两个效果图:
②plot(dose, dragA, type = "b",lty=2,pch=17)
③plot(dose, dragA, type = "b",lty=3,pch=15,lwd=3,cex=2)
④plot(dose, dragA, type = "b",lty=6,pch=23,col="blue",bg="green")
④plot(dose, dragA, type = "b",lty=6,pch=23,col="blue",fg="green")
⑤plot(dose, dragA, type = "b",lty=2,pch=2,lwd=2,
main="Clinical Trials for Drag A", #标题
sub="This is hypothetical data", #副标题
xlab = "Dosage",ylab = "Drag Response", #坐标轴标签
xlim = c(0,60),ylim = c(0,70)) #坐标轴范围
⑥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") #y为30的地方添加水平直线
library(Hmisc)
minor.tick(nx=3,ny=3,tick.ratio=0.5) #添加次要刻度线,此句表示在XY轴每两条主刻度线之间添加3条次刻度线,并且次要刻度线的长度将是主刻度线长度的一半。
legend("topleft",inset=.05,title ="Drug Type",c("A","B"), #图例
lty=c(1,2),pch = c(15,17),col=c("red","blue"))
par(opar)
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") #y为30的地方添加水平直线
library(Hmisc)
minor.tick(nx=3,ny=3,tick.ratio=0.5) #添加次要刻度线,此句表示在XY轴每两条主刻度线之间添加3条次刻度线,并且次要刻度线的长度将是主刻度线长度的一半。
legend("topleft",inset=.05,title ="Drug Type",c("A","B"), #图例
lty=c(1,2),pch = c(15,17),col=c("red","blue"))
par(opar)
本篇内容摘自《R语言实战》第三章:图形初阶