ggplot2之快速做圖qplot()spa
qplot()的意思是快速做圖,利用它能夠很方便的建立各類複雜的圖形,其餘系統須要好幾行代碼才能解決的問題,用qplot只須要一行就能完成。3d
本篇主要介紹:對象
1.數據集blog
首先咱們示例使用的數據集是R自帶的diamonds數據集,包含54000顆鑽石的價格和質量信息。ip
咱們同時使用一個小數據集dsmall,它是原始數據一個容量爲100的隨機樣本,咱們用這個數據集進行小數據的做圖展現。it
>set.seed(123)#讓樣本可重複 > dsmall <- diamonds[sample(nrow(diamonds),100),]
2.基本用法io
qplot()的前兩個參數是x和y,分別表明所畫對象的x座標和y座標,還有一個可選的data參數,若是進行指定,那麼qplot()會首先在的數據框中查找變量名,而後再到R的工做空間中進行搜索。function
下面是使用qplot()的一個簡單例子:class
>qplot(carat,price,data=diamonds)
這張圖顯示了變量之間很強的相關關係,以及一些明顯的異常值,這些關係彷佛是指數型的,咱們接下來對變量進行一些變換:變量
> qplot(log(carat),log(price),data=diamonds)
如今這種關係就接近線性了,因爲圖中的元素有很大的重疊,下結論時須要謹慎。若是咱們研究體積(X*Y*Z)和其重量之間的關係,咱們能夠這樣:
> qplot(carat,x*y*z,data=diamonds)
咱們能夠看到,大部分的鑽石都落在同一條直線上,但依然存在一些大的異常點。鑽石的密度應該是一個常數,因此體積和重量之間應該是線性關係。
3.顏色、大小、形狀和其餘屬性
咱們在重量和價格的散點圖添加顏色和切工信息。
> qplot(carat,price,data=dsmall,colour=color)
> qplot(carat,price,data=dsmall,shape=cut) #形狀切工
顏色大小和形狀都是圖形屬性的具體例子,他們都是影響數據如何進行展現的視覺屬性。
使用半透明的顏色能夠有效減小圖形元素重疊的現象,要建立半透明的顏色,可使用alpha圖形屬性,其值從0(徹底透明)到1(徹底不透明)
>qplot(carat,price,data=diamonds,alpha=I(1/10)) >qplot(carat,price,data=diamonds,alpha=I(1/100))
不一樣類型的變量有不一樣適用的圖形屬性。例如,顏色和形狀適用於分類變量,而大小適用於連續變量。
4.幾何對象
4.1向圖形中添加平滑曲線
經過改變幾何對象(簡寫爲geom),它幾乎能夠畫出任何一種類型的圖形。下面這些幾何對象適用於考察二維的變量關係:
對於一維分佈,幾何對象的選擇是由變量的類型指定:
若是在散點圖中有很是多的數據點,那麼數據展現的趨勢可能並不明顯,在這種狀況下應該在圖中添加一條平滑曲線,咱們用c()將多個幾何對象組成一個向量傳遞給geom.
幾何對象會按照指定的順序進行堆疊。
> qplot(carat,price,data=dsmall,geom=c("point","smooth"))
灰色區域表示逐點的置信區間。
利用method參數能夠選擇許多不一樣的平滑器:
> qplot(carat,price,data=dsmall,geom=c("point","smooth"),span=0.2) > qplot(carat,price,data=dsmall,geom=c("point","smooth"),span=1)
4.2箱線圖和擾動點圖
若是數據集中包含了一個分類變量和一個或多個連續變量,連續變量會如何隨着分類變量水平的變化而變化呢?箱線圖和擾動點圖提供了各自的方法達到這個目的。
> qplot(color,price/carat,data=diamonds,geom="jitter",alpha=I(1/5)) > qplot(color,price/carat,data=diamonds,geom="jitter",alpha=I(1/50))
上面擾動點圖的重疊問題能夠用半透明顏色來解決。
> qplot(color,price/carat,data=diamonds,geom="boxplot")
箱線圖顯示了分佈的中位數和四分位數都沒有太大的變化。
4.3直方圖和密度曲線圖
直方圖和密度曲線圖能夠展現單個變量的分佈,相對於箱線圖而言,它們提供了更多關於單個分佈的信息,但不利於在不一樣組之間比較。
下圖展現了鑽石重量的直方圖和密度曲線圖:
> qplot(carat,data=diamonds,geom="histogram") > qplot(carat,data=diamonds,geom="density")
adjust控制密度曲線的平滑程度(取值越大越平滑),binwidth參數控制直方圖的組距,組距較小顯示更多細節,組距較大反應整體特徵。
> qplot(carat,data=diamonds,geom="histogram",binwidth=1,xlim=c(0,3)) > qplot(carat,data=diamonds,geom="histogram",binwidth=0.1,xlim=c(0,3))
要在不一樣組之間進行對比,只須要在加上一個圖形映射:
> qplot(carat,data=diamonds,geom="density",colour=color) > qplot(carat,data=diamonds,geom="histogram",fill=color)
4.4條形圖
在離散變量的情形下,條形圖和直方圖相似,繪製方法是geom="bar"
> qplot(color,data=diamonds,geom="bar")
4.5時間序列中的線條圖和路徑圖
線條圖是將點從左到右進行鏈接,而路徑圖則按照點在數據集中的順序對其進行鏈接。
因爲diamonds中沒有包含時間變量,咱們這裏使用economics數據集,它包含美國過去40年的經濟數據。
下圖展現了失業率隨時間變化的線條圖:
> qplot(date,unemploy/pop,data=economics,geom="line")
咱們將年份映射到屬性colour上,更容易看清時間的行進方向。
> year <- function(x) as.POSIXlt(x)$year +1900 >plot(unemploy/pop,uempmed,data=economics,geom="path",colour=year(date))
5.分面
分面將數據分割成若干子集,而後建立一個圖形矩陣,將每個子集繪製到圖形矩陣的窗格中。
qplot()中默認分面方法是將圖形拆分紅若干窗格,能夠經過形如raw_var~col_var來指定。
..density..是一個新的語法,告訴ggplot2將密度而不是頻數映射到y軸。
>qplot(carat,..density..,data=diamonds,facets=color~.,geom="histogram",binwidth=0.1,xlim=c(0,3))
6.其餘選項
qplot()中還有一些其餘選項用於控制圖形外觀。
> qplot( + carat,price,data=dsmall, + xlab="Price ($)",ylab="Weight (carats)", + main = "Price-wight relationship")
原創文章,轉載請註明出處!