R數據可視化第一彈之qplot()

ggplot2之快速做圖qplot()spa

qplot()的意思是快速做圖,利用它能夠很方便的建立各類複雜的圖形,其餘系統須要好幾行代碼才能解決的問題,用qplot只須要一行就能完成。3d

本篇主要介紹:對象

  • qplot()的基本用法
  • 如何將變量映射到圖形屬性上(如大小、顏色和形狀等)
  • 如何經過指定不一樣的幾何對象來建立不一樣類型的圖形,以及如何將他們組合在一張圖中
  • 分面的應用,將數據拆分子集

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),它幾乎能夠畫出任何一種類型的圖形。下面這些幾何對象適用於考察二維的變量關係:

  • geom = "point"能夠繪製散點圖,這是當指定了x和y 參數給qplot的默認設置
  • geom = "smooth"將擬合一條平滑曲線,並將曲線和標準偏差展示在圖中。
  • geom = "boxplot"能夠繪製箱線圖
  • geom = "path"和geom="line"能夠在數據點之間繪製連線,這類圖傳統的做用是探索時間和其餘變量之間的關係。

對於一維分佈,幾何對象的選擇是由變量的類型指定:

  • 對於連續變量,geom = "histogram"繪製直方圖,geom="freqploy"繪製頻率多邊形,geom="density"繪製密度曲線。
  • 對於離散變量,geom="bar"用來繪製條形圖。

若是在散點圖中有很是多的數據點,那麼數據展現的趨勢可能並不明顯,在這種狀況下應該在圖中添加一條平滑曲線,咱們用c()將多個幾何對象組成一個向量傳遞給geom.

幾何對象會按照指定的順序進行堆疊。

> qplot(carat,price,data=dsmall,geom=c("point","smooth"))

  

灰色區域表示逐點的置信區間。

利用method參數能夠選擇許多不一樣的平滑器:

  • method = "loess",當n較小時是默認選項,使用的是局部迴歸的方法。曲線的平滑程度是由span參數控制的,範圍從0(很不平滑)到1(很平滑)
> 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()中還有一些其餘選項用於控制圖形外觀。

  • xlim,ylim:設置x軸和y軸的顯示區間,例如xlim=c(0,20)
  • log:對變量的對數操做
  • main:圖形的主標題,以大字號顯示
  • xlab,ylab:設置x軸和y軸的標籤文字
> qplot(
+ carat,price,data=dsmall,
+ xlab="Price ($)",ylab="Weight (carats)",
+ main = "Price-wight relationship")

  

 

 原創文章,轉載請註明出處!

相關文章
相關標籤/搜索