从qplot开始入门
本文使用的數(shù)據(jù)集為ggplot2包自帶的diamonds數(shù)據(jù)集,其包含了約54000顆鉆石的價格和質(zhì)量的信息。這組數(shù)據(jù)涵蓋了反映鉆石質(zhì)量的四個“C”——克拉重量(carat)、切工(cut)、顏色(color)和凈度(clarity),以及五個物理指標——深度(depth)、鉆石寬度(table)、x、y、z。如下圖:
本文使用的另一個數(shù)據(jù)集是原始數(shù)據(jù)的一個容量為100的隨機樣本
set.seed(1410) #使樣本可重復(fù)
dsmall<-diamonds[sample(nrow(diamonds),100),]
1 基本用法
格式:qplot(x,y,data=data1)
例:qplot(carat,price,data=diamonds)
qplot(log(carat),log(price),data=diamonds)
顏色、大小、形狀和其他屬性
qplot(carat,price,data=dsmall,colour=color)
qplot(carat,price,data=dsmall,shape=cut)
qplot(carat,price,data=diamonds,aplha=I(1/100))
2 幾何對象geom
geom=”point” 可以繪制散點圖
geom=”smooth” 將擬合一條平滑曲線,并將曲線和標準誤展現(xiàn)在圖中
geom=”boxplot” 可以繪制箱線胡須圖,可以概括一系列點的分布情況
geom=”path” 和geom=”line” 可以在數(shù)據(jù)點之間繪制連線。線條圖只能創(chuàng)建從左到右的連線,而路徑圖則可以是任意方向。
對于一維的分布,幾何對象的選擇是由變量的類型指定的:
對于連續(xù)變量,geom=”histogram”繪制直方圖,geom=”freqploy”繪制頻率多邊形,geom=”density”繪制密度曲線。
對于離散變量,geom=”bar”繪制條形圖。
例:向圖中添加平滑曲線
qplot(carat,price,data=dsmall,geom=c("point","smooth"))
qplot(carat,price,data=diamonds,geom=c("point","smooth"))
不繪制標準誤差
qplot(carat,price,data=dsmall,geom=c("point","smooth"),se=FALSE)
method參數(shù)選擇不同的平滑器(loess/gam/lm/rlm)
method=”loess”,當n較小時是默認選項,使用的是局部回歸的方法。曲線的平滑程度是由span參數(shù)控制的,其取值范圍是從0(很不平滑)到1(很平滑)
例:qplot(carat,price,data=dsmall,geom=c("point","smooth"),span=0.2)
Loess對于大數(shù)據(jù)并不十分適用,因此當n超過1000時,默認的是另一種平滑算法。
method=”gam”,formula=y~s(x)調(diào)用mgcv包擬合一個廣義可加模型。對于大數(shù)據(jù),可使用y~s(x,bs=”cs”),這是數(shù)據(jù)量超過1000時默認使用的選項。
method=”lm”擬合的是線性模型,默認情況下式一條直線,但可以指定formula=y~poly(x,2)來擬合一個二次多項式或加載splines包以使用自然樣條:formula=y~ns(x,2)。第二個參數(shù)是自由度:自由度取值越大,曲線的波動也越大。
例:library(splines)
qplot(carat,price,data=dsmall,geom=c("point","smooth"),method="lm",formula=y~ns(x,5))
method=”rlm”采用的是更穩(wěn)健的擬合算法,使結(jié)果對異常值不太敏感。這個方法是MASS包的一部分,運用前需加載MASS包。
箱線圖和擾動圖
如果一個數(shù)據(jù)集中包含了一個分類變量和一個或多個連續(xù)變量,以上兩個圖可以描繪連續(xù)變量會如何隨著分類變量水平的變化而變化。
例:下圖展示了鉆石每克拉的價格隨顏色的變化情況
qplot(color,price/carat,data=diamonds,geom="jitter")
qplot(color,price/carat,data=diamonds,geom="boxplot")
?
直方圖和密度圖
直方圖和密度圖可以展示單個變量的分布,如以下兩圖展示了鉆石重量的直方圖和密度圖。
例:qplot(carat,data=diamonds,geom="density")
qplot(carat,data=diamonds,geom="histogram")
其中直方圖可以通過設(shè)置binwidth參數(shù)設(shè)置組距的大小。
?
要在不同組之間對分布進行對比,只需要加上一個圖形映射,如:
qplot(carat,data=diamonds,geom="density",colour=color)
qplot(carat,data=diamonds,geom="histogram",binwidth=0.1,xlim=c(0,3),fill=color)
?
條形圖
在離散變量的情形下,條形題與直方圖相類似,繪制的方法是geom=”bar”。條形圖幾何對象會計算每一水平下觀測的數(shù)量,因此不需要預(yù)先對數(shù)據(jù)進行匯總。如果數(shù)據(jù)已經(jīng)進行了匯總,或者想用其他的方式對數(shù)據(jù)進行分組處理(如對連續(xù)變量進行分組求和),可以使用weight幾何對象。
例:左圖是鉆石顏色的普通條形圖,右圖是按重量加權(quán)的條形圖
qplot(color,data=diamonds,geom="bar")
qplot(color,data=diamonds,geom="bar",weight=carat)+
? scale_y_continuous("carat")
?
時間序列中的線條圖和路徑圖
線條圖的X軸一般是時間,展示的是單個變量隨時間變化的情況,路徑圖則展示了兩個變量隨時間聯(lián)動的情況,時間反映在點的順序上。
使用economics數(shù)據(jù)集,它包含了美國過去40年的經(jīng)濟數(shù)據(jù),左圖展示了失業(yè)率的變化,右圖表示失業(yè)星期數(shù)的中位數(shù)。
qplot(date,unemploy/pop,data=economics,geom="line")
qplot(date,uempmed,data=economics,geom="line")
?
下圖表示失業(yè)率和失業(yè)時間長度隨時間的變化的路徑。左圖有很多交叉,時間變化的方向并不明顯,右圖中將年份映射到了colour屬性屬性上,時間的行進方向更明顯。
qplot(unemploy/pop,uempmed,data=economics,geom=c("point","path"))
year<-function(x) as.POSIXlt(x)$year+1900
qplot(unemploy/pop,uempmed,data=economics,geom=c("point","path"),colour=year(date))
?
3 分面
之前利用利用圖形屬性(顏色和形狀)來比較不同分組的方法,它可以將所有的組繪制在同一張圖上。分面是另一種實現(xiàn)的方法:它將數(shù)據(jù)分割成若干子集,然后創(chuàng)建一個圖形的矩陣,將每一個子集繪制到圖形矩陣的窗格中。
qplot()默認的分面方面是將圖形拆分成若干個窗格,這可以通過形如row_var-col_var的表達式進行指定。可以指定任意數(shù)量的行變量和列變量,但當變量數(shù)超過兩個時,生成的圖形可能非常大,以至于不適合在屏幕上顯示。如果只想一行一列,可以使用.作為占位符,例如row_var~.會創(chuàng)建一個單列多行的圖形矩陣。
例:以顏色為條件的重量的直方圖,右圖繪制的是比例,這使得比較不同組的分布時不會受到該組樣本量大小的影響。
qplot(carat,data=diamonds,facets=color~.,geom="histogram",
????? binwidth=0.1,xlim=c(0,3))
qplot(carat,..density..,data=diamonds,facets=color~.,
????? geom="histogram",binwidth=0.1,xlim=c(0,3)
?
4 其他選項
qplot中還有一些其他的選項用于控制圖形的外觀。這些參數(shù)與在plot中的作用相同。
xlim,ylim:設(shè)置x軸和y軸的顯示區(qū)間,例xlim=c(0,20)
log:一個字符型向量,說明哪一個坐標軸應(yīng)該取對數(shù),例log=”x”表示對x軸取對數(shù),log=”xy”表示對x軸和y軸都取對數(shù)。
main:圖形的主題,參數(shù)可以是字符串,也可以是表達式
xlab,ylab:設(shè)置x軸和y軸的標簽文字,可以是字符串或數(shù)學(xué)表達式
例:
qplot(
? carat,price,data=dsmall,
? xlab="price($)",ylab="weight(carats)",
? main="price-weight relationship"
)
總結(jié)
以上是生活随笔為你收集整理的从qplot开始入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 海南免税概念股票有哪些
- 下一篇: 第一章 统计学概论