#R-ggplot#qplot筆記

ggplot系列1——qplot畫圖


Date:2013.9.29
Author:duqi.yc


1、Preface

最初選擇R的理由之一,就是覺得它畫圖比較不錯,簡單美觀,比起SAS各種地方調試,R更容> ?qplot易上手。這可能跟我有MATLAB基礎有關係吧。
熟悉了plot,bar,boxplot等之後,突然發現了ggplot2,完全顛覆了對於畫圖的“價值觀”——畫圖竟然也有一套圖形語法,驚訝!
正所謂:天外有山,人外有人。看了Hadley Wickham的<>之後,領略了數據可視化的另一個世界。
掌握了一點ggplot2,日常的工作中順手就開始“塗抹”了。可能是舊有的plot,bar,boxplot的思維作祟,每次用ggplot2來畫圖,很多細節問題都記不清楚,可能這個也是其他同學使用ggplot2覺得複雜的地方吧,每個地方都需要去單獨的設置,從Mapping,scale等等。
還好,Hadley Wickham知道我們的難處,給了一個qplot(quick plot),類似plot,當作一個敲門磚。今天就總結下qplot的用法,不期望給其他同學有幫助,只祈求自己加深印象(ps:貌似很多東西不經過自己的咀嚼,總是不是自己的,汗!)

2、What's qplot?

qplot,是quick plot的簡稱。大部分人熟悉了plot,如果直接上手ggplot可能很多同學難受、不習慣,所以hadley Wickham給了一個類似plot的ggplot,可以當作一個定製版的ggplot。

?qplot

在help中就看到qplot的用法和參數說明,如下:

`Usage:

qplot(x, y = NULL, ..., data, facets = NULL, margins = FALSE, geom = "auto", stat = list(NULL), position = list(NULL), xlim = c(NA, NA), ylim = c(NA, NA), log = "", main = NULL, xlab = deparse(substitute(x)), ylab = deparse(substitute(y)), asp = NA)`

傳統plot的用法和參數,如下:
plot(x, y, type='l',col = NULL,xlab = NULL,ylab = null,xlim=c(NA,NA),ylim=c(NA,NA),main = NULL,sub = NULL,...)

從qplot和plot參數對比看,兩個語法是不是很像,唯一不同的是

  • qplot可以通過facets參數來通過數據映射分組畫圖;
  • qplot還可以在裏面通過stat添加統計線;
  • qplot還可以通過log對橫縱座標直接數據變化。

所以使用qplot時候,該寫x,y,main,xlab,ylab的地方跟plot一樣;另,如果想添加stat統計曲線,或者想把不同的參數對應的數據分圖看,可以用facets來分面。下面拿一個實例做個qplot的使用說明。

3、qplot畫圖實例

qplot(ds,pvuv,data = product.detail) #基礎畫圖


qplot(ds,pvuv,data = product.detail,main = "qplot畫圖測試",xlab = "Date",ylab = "pvuv",colour = I("red")) # 加入標題和顏色


qplot(ds,pvuv,data = product.detail,main = "qplot畫圖測試",xlab = "Date",ylab = "pvuv",colour = I("red"),facets = . ~ bucket_test) # 分面,把不同的參數類型分開畫圖


qplot(ds,pvuv,data = product.detail,main = "qplot畫圖測試",xlab = "Date",ylab = "pvuv",colour = I("red"),facets = bucket_test ~ type) # 根據不同的參數分面可視化,現在能看到一些規律在圖裏面吧。

4、座標軸和圖例處理

其實,單純的ggplot畫圖還沒覺得麻煩,就是遇到了不同類型的數據時候,橫縱座標軸顯示問題,特別糾結,不停的去查資料。就像上面的4個圖,橫座標的時間軸就看着很難看,是不?知其煩,把自己平時用了一些總結,放在這裏:

  • 座標軸處理:scale_x_date(breaks = NULL,labels = date_format("%m%d"))

這個標度變換非常好用,breaks表示哪些元素可以在圖形上顯示,labels代表圖形上顯示什麼,兩個同時被使用。 同理scaleycontinus(labels = percent),作用是Y軸的元素以%的形式顯示。當然,其他標度都可以對應設置,請參考P109。

  • 分面座標軸處理:facet_wrap( ~ type,nrow = 1,scales = "free")

這個是分面的一個參數,可以根據變量數據分面,scales = "free"(不同xy軸座標可不同)、“fixed"(不同分面xy座標相同)、"freex"(x標度可變y固定)、"freey"(y標度可變x固定),具體更詳細見P129。哦對了,nrow表示分面要幾行。

5、主題Theme

主題包括標題、座標軸標籤、圖例等文字的東西,也包括背景等顏色搭配。 我們日常用的較多就是背景和標題、圖例了吧,見P151。可以通過 `+theme( )' 添加修改 ,尤其這個地方參數太多且複雜,不再多少說。


零碎寫了一點,只爲自己梳理下知識點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章