今天状态不好,但是学习R语言,貌似就是对着书本瞧瞧代码,瞧瞧代码,很适合打发时间,出来图形时候的微微成就感还是很有治愈效果的。
3.图形初阶
3.1使用图形
pdf("mygraph.pdf") #保存为pdf文件
attach(mtcars) #绑定数据框mtcars
plot(wt,mpg) #散点图
abline(lm(mpg~wt)) #添加一条最优的拟合曲线
title("Regression of MPG on Weight") #添加标题
detach(mtcars) #解除绑定
dev.off()
3.2简单的例子####
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=19,lty=2,col="red")
plot(dose,drugB,type="b",pch=23,lty=6,col="blue",fg="green")
试了下最后一行的代码里的fg,居然是讲边框的颜色改为绿色。赞喽~
3.3图形参数
方法一可对全部的图形进行图形参数的设定,但是该方法使用前最好要先保存当前参数,保证绘制图形后能还原设置。
par() #此参数可用于设定图形参数,不添加任何参数会生成一个含有当前参数设置的列表
opar<-par(no.readonly = TRUE) #将图形设置的原参数赋值给opar
par(lty=2,pch=17)
par(opar)
另一种常用的方法是指定的选项仅对这幅图有效。
plot(dose,drugA,type="b",lty=2,pch=17)
具体查看参数帮助 ?plot
注意rainbow()函数可用于生成彩虹型颜色,gray()可生产多阶灰度
n<-10
mycolors<-rainbow(n)
pie(rep(1,n),labels = mycolors,col=mycolors)
mygrays<-gray(0:n/n)
pie(rep(1,n),lables=mygrays,col=mycolors)
3.4添加文本、自定义坐标轴和图例
plot(dose,drugA,type="b",
col="red",lty=2,pch=2,lwd=2,
main="clinical trial for drug A",
sub="this is hypothetical data",
xlab = "dosage",ylab="drug response",
xlim = c(0,60),ylim = c(0,70))
发现这些代码太繁杂了,再码些例子试试看:
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", #禁用Y轴(只留下框架,去除刻度)
lty=3,ann=FALSE) #绘制图形
lines(x,z,type="b",pch=22,col="blue",lty=2)#line()函数可以为现有图形添加新的图形元素
axis(2,at=x,labels = x,col.axis="red",las=2) #添加左边的坐标信息
axis(4,at=z,labels=round(z,digits = 2),
col.axis="blue",las=2,cex.axis=0.7,tck=-.01
) #添加右边的坐标信息
mtext("y=1/x",side=4,line=3,cex.lab=1,las=2,col="blue") #用于在图形便捷添加文本
title("an example of creative axes",
xlab = "x values",
ylab="Y=X")#添加标题和文本
还可以添加次要刻度线,需要加载Hmisc包中的minor.tick()函数。
library("Hmisc")
minor.tick(nx=2,ny=3,tick.ratio=0.5)
添加参考线
abline(h=c(1,5,7)) #在y为1,5,7位置添加水平实线
abline(v=seq(1,10,2),lty=2,col="blue")
最终的结果如下图:
添加文本标注
attach(mtcars)
plot(wt,mpg,
main="Mileage vs. Car Weight",
xlab = "weight",ylab="Meileage",
pch=18,col="blue")
text(wt,mpg,row.names(mtcars),cex=0.6,pos=4,col="red")
detach(mtcars)
3.5图形组合
attach(mtcars)
opar<-par(no.readonly = TRUE)
par(mfrow=c(2,2))#按照行填充,前一个数字为行数,后一个数字为列。
plot(wt,mpg,main = "wt vs. mpg")
plot(wt,disp,main = "wt vs. disp")
hist(wt,main = "histogram of wt")
boxplot(wt,main="boxplot of wt")
par(opar)
detach(mtcars)
效果如下: