《R語言實戰》第3章 筆記

1.交互地構建圖形:

> mtcars mpg cyl disp hp drat wt qsec vs am gear carbMazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2> #生成pdf(start)> pdf(mygraph.pdf)> #綁定數據框> attach(mtcars)> #生成散點圖> plot(wt,mpg)> #添加一條最優擬合曲線> abline(lm(mpg~wt))> #添加標題> title("Regression of MPG on Weight")> #解除綁定> detach(mtcars)> #生成pdf(end)> dev.off()

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")

plot()是R中為對象作圖的一個泛型函數(它的輸出將根據所繪製對象類型的不同而變化)。本例中,plot(x, y, type="b")將x置於橫軸,將y置於縱軸,繪製點集(x, y),然後使用線段將其連接。選項type="b"表示同時繪製點和線。

改變圖形樣子:

方法一:

> 複製了一份當前的圖形參數設置> opar <- par(no.readonly=TRUE)> 將默認的線條類型修改為虛線(lty=2)並將默認的點符號改為了實心三角(pch=17)> par(lty=2,pch=17)> 繪製圖形> plot(dose,drugA,type="b")> 還原原始圖形參數設置> par(opar)

方法二:

> 圖形參數設置只對當前圖形有效> plot(dose,drugA,type="b",lty=2,pch=17)

  • pch 指定繪製點時使用的符號

  • cex 指定符號的大小
  • lty 指定線條類型
  • lwd 指定線條寬度
  • col 默認的繪圖顏色
  • col.axis 坐標軸刻度文字的顏色
  • col.lab 坐標軸標籤(名稱)的顏色
  • col.main 標題顏色
  • col.sub 副標題顏色
  • fg 圖形的前景色
  • bg 圖形的背景色

> 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)

文本屬性(略,和顏色屬性類似)

用於控制圖形尺寸和邊界大小的參數

> opar <- par(no.readonly=TRUE)> par(pin=c(2,3))> par(lwd=2,cex=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="green")> par(opar)

> plot(dose,drugA,type="b",col="red",lty=2,pch=2,lwd=2,main="Clinical Trials for Drug A",sub="This is hypothetical data",xlab="Dosage",ylab="Drug Response",xlim=c(0,60),ylim=c(0,70))

3、一個綜合的例子:

> #生成數據> x <- c(1:10)> y <- x> z <- 10/x> opar <- par(no.readonly=TRUE)> #增加邊界大小> par(mar=c(5,4,4,8)+0.1)> #繪製x對y的圖形> plot(x,y,type="b",pch=21,col="red",yaxt="n",lty=3,ann=FALSE)> #添加x對1/x的直線> lines(x,z,type="b",pch=22,col="blue",lty=2)> #描繪自己的坐標軸> 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")> par(opar)

> attach(mtcars)> plot(wt,mpg,main="Mileage vs. Car Weight",xlab="Weight",ylab="Mileage",pch=18,col="blue")> text(wt,mpg,row.names(mtcars),cex=0.6,pos=4,col="red")> detach(mtcars)

> opar <- par(no.readonly=TRUE)> par(cex=1.5)> plot(1:7,1:7,type="n")> text(3,3,"Example of default text")> text(4,4,family="mono","Example of mono-spaced text")> text(5,5,family="serif","Example of serif text")> par(opar)

4、圖形組合:

> attach(mtcars)> opar <- par(no.readonly=TRUE)> #mfrow=c(nrows, ncols)來創建按行填充的、行數為nrows、列數為ncols的圖形矩陣。另外,可以使用nfcol=c(nrows, ncols)按列填充矩陣。> par(mfrow=c(2,2))> plot(wt,mpg,main="Scatterplot of wt vs. mpg")> plot(wt,disp,main="Scatterplot of wt vs disp")> hist(wt,main="Histogram of wt")> boxplot(wt,main="Boxplot of wt")> par(opar)> detach(mtcars)

> attach(mtcars)> layout(matrix(c(1,1,2,3),2,2,byrow=TRUE))> hist(wt)> hist(mpg)> hist(disp)> detach(mtcars)

> attach(mtcars)> #第1行中圖形的高度是第2行中圖形高度的二分之一。除此之外,右下角圖形的寬度是左下角圖形寬度的三分之一> layout(matrix(c(1,1,2,3),2,2,byrow=TRUE),widths=c(3,1),heights=c(1,2))> hist(wt)> hist(mpg)> hist(disp)> detach(mtcars)

總結:本章主要是R語言圖形繪製入門,很多細節並沒有完全羅列出來,大家有興趣可以查閱相關資料。先開始學習最好是儘快抓住核心知識點,然後通過不斷練習加深理解,完善學習細節部分。圖形對於數據分析來講非常重要,它可以給我們一種對這個世界更為直觀,更為具體的感性認識,利用好它,我們可以更好地去理解這個世界。


推薦閱讀:

Python類圖書數據分析
學習數據分析的體會和收穫
雲課堂Excel課程數據可視化分析

TAG:数据分析 | R编程语言 |