精通 R plot—第1部分:顏色,圖例和線

本篇文章是關於如何在R中使用plot函數來建立圖形系列文章的第一篇。固然,R中還有其餘的包能夠建立很酷的圖形(如ggplot2lattice)。不過plot函數也能夠知足咱們基本的繪圖要求。函數

在這篇文章,咱們能夠學習到如何在散點圖中添加信息,如何添加圖例,最後在圖中添加回歸線。學習

模擬數據

#模擬數據
dat<-data.frame(X=runif(100,-2,2),T1=gl(n=4,k=25,labels=c("Small","Medium","Large","Big")),Site=rep(c("Site1","Site2"),time=50))
mm<-model.matrix(~Site+X*T1,dat)
betas<-runif(9,-2,2)
dat$Y<-rnorm(100,mm%*%betas,1)
summary(dat)

添加顏色

首先,plot函數能夠用不一樣的方式來添加顏色。一種方式是給plot的col參數傳遞一個顏色向量。spa

#選擇須要使用的顏色
library(RColorBrewer)
#RColorBrewer中的全部調色板
display.brewer.all()
#選取Set1調色板中的四種顏色
cols<-brewer.pal(n=4,name="Set1")
#cols表示的是四種不一樣顏色的名稱
#建立一個跟T1變量的因子水平相對應的顏色向量
cols_t1<-cols[dat$T1]

plot(Y~X,dat,col=cols_t1,pch=16)

更改圖形符號

建立圖形符號向量,用來標記兩種不一樣的Site。以下所示:翻譯

pch_site<-c(16,18)[factor(dat$Site)]
#pch參數用來控制圖形符號
plot(Y~X,dat,col=cols_t1,pch=pch_site)

添加圖例

如今給圖形添加圖例:code

plot(Y~X,dat,col=cols_t1,pch=pch_site)
legend("topright",legend=paste(rep(c("Small","Medium","Large","Big"),times=2),rep(c("Site 1","Site 2"),each=4),sep=", "),col=rep(cols,times=2),pch=rep(c(16,18),each=4),bty="n",ncol=2,cex=0.7,pt.cex=0.7)

legend函數的第一個參數指定圖例顯示在圖形中的位置,接着是圖例的文本。其它可參數包括指定圖例的顏色,圖形符號等。更多詳情可經過?legend查看。orm

經過設置xpd=TRUE能夠在圖形外增長圖例。並指定x,y座標軸。ci

plot(Y~X,dat,col=cols_t1,pch=pch_site)
legend(x=-1,y=13,legend=paste(rep(c("Small","Medium","Large","Big"),times=2),rep(c("Site 1","Site 2"),each=4),sep=", "),col=rep(cols,times=2),pch=rep(c(16,18),each=4),bty="n",ncol=2,cex=0.7,pt.cex=0.7,xpd=TRUE)

添加回歸線

#generate a new data frame with ordered X values
new_X<-expand.grid(X=seq(-2,2,length=10),T1=c("Small","Medium","Large","Big"),Site=c("Site1","Site2"))
#the model
m<-lm(Y~Site+X*T1,dat)
#get the predicted Y values
pred<-predict(m,new_X)
#plot
xs<-seq(-2,2,length=10)
plot(Y~X,dat,col=cols_t1,pch=pch_site)
lines(xs,pred[1:10],col=cols[1],lty=1,lwd=3)
lines(xs,pred[11:20],col=cols[2],lty=1,lwd=3)
lines(xs,pred[21:30],col=cols[3],lty=1,lwd=3)
lines(xs,pred[31:40],col=cols[4],lty=1,lwd=3)
lines(xs,pred[41:50],col=cols[1],lty=2,lwd=3)
lines(xs,pred[51:60],col=cols[2],lty=2,lwd=3)
lines(xs,pred[61:70],col=cols[3],lty=2,lwd=3)
lines(xs,pred[71:80],col=cols[4],lty=2,lwd=3)
legend(x=-1,y=13,legend=paste(rep(c("Small","Medium","Large","Big"),times=2),rep(c("Site 1","Site 2"),each=4),sep=", "),col=rep(cols,times=2),pch=rep(c(16,18),each=4),lwd=1,lty=rep(c(1,2),each=4),bty="n",ncol=2,cex=0.7,pt.cex=0.7,xpd=TRUE)

還能夠在繪圖區域添加許多圖形元素,例如:pointslinesrecttextget

後面的文章會繼續介紹如何控制軸標籤和刻度線。it

本文由雪晴數據網負責翻譯整理,原文請參考Mastering R Plot – Part 1: colors, legends and lines做者Lione Hertzog。轉載本譯文請註明連接http://www.xueqing.cc/cms/article/117 io

相關文章
相關標籤/搜索