1. 程式人生 > >R-繪圖01

R-繪圖01

car false pan 桌面 圖形 axis cat terrain name

3.1 使用圖形
detach(mydata) #鏈接數據框
plot(S3,S4)
abline(lm(S3~S4)) #添加最優擬合曲線
title("heheh,fuck you")
detach(mydata) #關閉鏈接數據框 mydata

保存文件為pdf在程序前後加上兩句
pdf("c:\\users\\011\\deaktop\\mydata.pdf") #保存為pdf格式到桌面
detach(mydata)
plot(S3,S4)
abline(lm(S3~S4))
title("heheh,fuck you")
detach(mydata)
dev.off() #關閉鏈接
除了pdf()以外,還可以使用函數win.metafile()、png()、jpeg()、bmp()、tiff()、xfig()和postscript()將圖形保存為其他格式。

執行plot(),hist()繪制直方圖時會覆蓋先前的圖形。如果要創建新的圖形可以這樣:
1、打開新的圖形窗口
dev.new()
statements to create graph 1
dev.new()
statements to create graph 2
etc.
2、使用dev.new()、dev.next()、dev.prev()、dev.set()和dev.off()同時打開多個圖形窗口。
dose<-c(20,30,40,45,60)
drug1<-c(16,20,27,40,60)
drug2<-c(15,18,25,31,40)
plot(dose,drug1,type="b") #type="b"
3.2 eg
> 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")
3.3 圖形參數
> opar<-par(no.readonly=TRUE) #生成一個可以修改的當前圖形參數列表。
> par(lty =2,pch =17) #lty=2表示將默認的線條改成虛線 pch=17 將默認的點符號改成實心三角
> plot(dose,drugA,type = "b") #par(lty =2) par(pch=17) 也是可以的
> par(opar)

亦或 t(dose,drugA,type="b",lty=2,pch=17)

【3.3.1 符號和線條】


pch = 用於指定繪制點時使用的符號。

對於邊界21~25,可以指定邊界顏色(col=)和填充色(bg=)

lty=用於指定想要的線條類型。


【3.3.2】 顏色

顏色可以通過顏色下標,顏色名稱,十六制顏色值,RGB值或HSV值指定顏色。
eg: col=1,col="white",col="#FFFFFF",col=rgb(1,1,1),col=hsv(0,0,1) 都是表示白色的等價方式。

R中有很多種創建連續型向量的函數,包括rainbow(),heat.colors(),terrain.colors(),topo.colors()以及cm.colors()
距離來說:rainbow(10)可以生成10種連續的彩虹型顏色。多階灰度色可以使用gray()函數生成。這是要通過一個元素值為0~1之間的向量來指定各顏色的灰度。
gray(0:10/10)將生成10階灰度色。
n<-10
mycolors<-rainbow(n)
pie(rep(1,n),labels=mycolors,col=mycolors)
mygrays<-gray(0:n/n)
pie(rep(1,n),labels=mygrays,col=mygrays)

【3.3.3】 文本屬性

eg: par(font.lab = 3 , cex.lab = 1.5 , font.main = 4 , cex.main = 2)
斜體 坐標軸標簽1.5倍 粗斜體 標題2倍

【3.3.4】 圖形尺寸和邊界尺寸

> 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(pin=c(2,3),mai=c(1,.5,1,.2)) #生成寬2英寸,高3英寸,上下邊界為1英寸,0.5英寸,
左右邊界為1英寸,0.2英寸
> par(lwd=2,cex=1.5) #線條的寬度為默認的寬度的兩倍,符號為默認的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")
> par(opar) #還原了初始圖形參數設置

高級函數中已經存在了默認的標題和標簽,可以在plot或者是par中添加 ann=FALSE來進行移除
axes = TRUE 禁用所有坐標軸,xaxt="n" yaxt="n"禁用x,y軸

3.4.1 標題
使用title( )函數來為圖形添加標題和坐標軸標簽。
title(main = "main title",sub = "sub-title",xlab = "x-axis label",ylab = "y-axis label")
3.4.2 坐標軸
axis(side,at = ,labels=,pos=,lty=,col=,las=,tck=,......)


library(Hmisc)
minor.tick(nx=n,ny=n,tick.ration=n) 添加次要刻度線,nx,ny代表X軸,Y軸每兩條主刻度線之間劃分的去取件個數
tick.ration 代表 相對於主刻度線,次刻度線的大小


3.4.3 參考線
abline(h = yvalues,v = xvalues) # 添加參考線
abline(h = c(1,5,7)) # 在y為1,5,7的位置添加水平實線
abline(v=seq(1,10,2),lty=2,col="blue") # 在x為1,3,5,7的位置添加了垂直的藍色虛線

3.4.4 圖例
legend(location,title,legend,......)


bty 指定盒子樣式
bg 指定背景色
cex 指定大小
text.col 指定文本顏色
horiz=TRUE 水平放置圖例

eg:
> 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 Disage",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")

3.5 添加標註
text(location,"text to place",pos,......)
mtext("text to place ",side,line=n,.....)


text ( x,t,rownames ( counts ) ,cex = .6,pos = 4,col = "red" ) #-----添加各數據標註

【條形圖---類別型變量(頻數)】
barplot(類別變量) #類別行變量為 因子或有序型因子
barplot(height) heigtht就是一個向量或矩陣
horiz=TRUE會生成一副水平條形圖
如果height是矩陣,繪圖結果會變成堆砌條形圖或分組條形圖。
若beside=FALSE,則矩陣中的每一列都將生成圖中的一個條形,各列中的值將會給出堆砌的字條的高度。若為 TRUE,各列中的值將會並列。
names.arg = means$groupe.1 表示用means中的groupe.1 變量進行標註分類
cex.axis =0.75 代表縱軸尺寸,cex.names = 0.5 代表橫軸的尺寸
【棘狀圖】對堆砌條形圖進行了縮放,每個條形的高度均為1,每一段的高度表示比例。
spine(變量型矩陣)
spine(counts,main = "sprinoram example")
【餅圖】---數值型向量
pie(x,labels) x是非負數向量,表示各個扇形的面積,而labels是表示各扇形標簽的字符型向量
par(mfrow=c(2,2))
slices=c(10,12,4,16,8)
lbls=c("US","GERMAN","CHINA","JAPAN","AUSTRALIA")

pie(slices,labels = lbls,
main = "my pie autogram")
pct = round(slices/sum(slices)*100)
lbls2=paste(lbls," ",pct,‘%‘,seq="")
lbls2
pie(slices,labels = lbls2,col=rainbow(length(slices)),
cex=0.8,radius = 1.5 (設置半徑讓圖變大)
)


【扇形圖】
plotrix包中的fan.plot()函數

【直方圖】 --數值型向量
hist(x)
par(mfrow=c(2,2))
hist(mtcars$mpg)

hist(mtcars$mpg,
breaks = 12, #將組數分為12組
col="red",
xlab="x miles per gallon",main="colored histogram with 12 bins")

hist(mtcars$mpg,
freq=FALSE, #縱坐標顯示概率
breaks = 12,
col="red",
xlab="miles per gallon",main="hhaa")
rug(jitter(mtcars$mpg,amount=0.01)) #軸須圖 amount將結數據打散,並將每個數據點添加隨機值,以免重疊的點產生影響
lines(density(mtcars$mpg),col="blue",lwd=2) #密度曲線

h<-hist(mtcars$mpg,
freq=FALSE, #縱坐標顯示概率
breaks = 12,
col="red",
xlab="miles per gallon",main="hhaa")
xfit<-seq(min(mtcars$mpg),
max(mtcars$mpg),length=40)
yfit<-dnorm(xfit,
mean = mean(mtcars$mpg),
sd=sd(mtcars$mpg))
yfit<- yfit*diff(h$mids[1:2])*length(mtcars$mpg)
lines(xfit,yfit,col="blue",lwd=2) #添加正態曲線
box() #添加盒子外框

rug(jitter(mtcars$mpg,amount=0.01)) #將每個數據點添加一個小的隨機值(+-amount之間的均勻分布隨機數),以避免重復的值產生影響。

【核密度圖】 --數值型向量

plot(density(x)) x為數值型變量 因為plot會創建新的圖形,所以在舊圖上添加曲線用lines()函數
使用sm.density.compare進行核密度圖的疊加
sm.density.compare(x,factors) #x是數值型變量 factor是一個分組變量
par(lwd=2)
install.packages("sm")
library(sm)
attach(mtcars)
cyl.f<-factor(cyl,levels=c(4,6,8),
labels=c("4 cylinder","6 cylinder","8 cylinder"))
sm.density.compare(mpg,cyl,xlab="x zhou miles per gallon")
title(main="mpg distrabution by car cylinders")
colfill<-c(2:(1+length(levels(cyl.f))))
legend(locator(1),levels(cyl.f),fill=colfill)

【並列箱型圖進行跨組比較】
boxplot(formula,data=dataframe) formula是一個公式,dataframe代表數據框,varwidth=TRUE將使箱線圖的寬度與其樣本大小的平方根成正比。參數horizontal = TRUE 可以反轉坐標軸的方向。
formula示例:y~A*B A*B是類別向量,A和B的所有水平的兩兩組合生成數值型變量y的箱線圖
notch=TRUE ,可得含凹槽的箱線圖,若兩個凹槽重疊,表明中位數有顯著差異

boxplot(mpg~cyl,data=mtcars,
notch=TRUE, #含凹槽的箱型圖
varwidth=TRUE, #使箱型圖的寬度與各自的樣本大小成正比
col="red",
main="car mileage data",
xlab="number"
)
交叉箱型圖:


【點圖】 --數值型向量
dotchart(x,labels=) 【分組點圖】

x<-mtcars[order(mtcars$mpg),]
x$cyl<-factor(x$cyl)
x$color[x$cyl==4]<-"red" #將cyl等於的4的color值標為紅色
x$color[x$cyl==6]<-"blue"
x$color[x$cyl==8]<-"darkgreen"
dotchart(x$mpg,labels = row.names(x),
cex = .7,
groups = x$cyl, #根據xyl進行分組
gcolor = "black", #分組變量以黑色顯示
color = x$color, #點和標簽的顏色來自向量color
pch=19, #點以圓圈表示
main="gas mileage for car model\ngrouped by cylinder",
xlab="miles per gallon"
)

R-繪圖01