ggplot系列2-更多畫圖細節——座標軸和圖例

ggplot更多畫圖細節——座標軸和圖例

Date: 2013.10.5
Author: duqi.yc@taobao.com函數


一、不一樣Data Set數據在同一圖中展現

假設x 是包含419096_1006這個PID的各個效果指標數據,y是包含419253_1006的各個效果指標數據,若是讓兩個pid的同一個指標click畫在同一個圖中展現,以下:
p <- ggplot()
p
+ geom_line(data = x,aes(x = dt,y = click,colour = "419096_1006"))
+ geom_line(data = y,aes(x = dt,y = click,colour ="419253_1006")) + scale_colour_manual("PID",values = c("419096_1006" = "red","419253_1006" = "blue"))
+ scale_x_date(limits = as.Date(c("2012-10-01","2013-09-24")),labels = date_format("%m-%d")) # 調整橫座標時間顯示
+ scale_y_continuous(labels = comma) # 調整y座標顯示 
字體


特別注意:qplot不能實現不一樣數據集數據在同一個圖中展現,除非分面。ui


二、調整X,Y和標題的字體外觀等

簡單畫出click隨時間的變化圖,以下:
p + geom_line(aes(y = click)) + labs(title = "this is a test",x = "date",y = "click") # 標題="this is a test" ,x = date, y = click  this

修改上圖的標題,XY軸的外觀,以下:
> last_plot() #上面畫的圖+ theme(plot.title = element_text(size=20,colour = "blue",face = "bold"),axis.title.x = element_text(size=15,colour = "black",face = "bold"),axis.text.y = element_text(colour = "red"),axis.line = element_line(colour = "red",size = 5),panel.grid.major = element_line(colour="red"))# 標題設置爲"大小20,藍色,加粗;X標題設置爲"大小15,黑色,加粗",Y的標籤設置爲"紅色" 3d


上圖中,爲了明顯區分XY的標題和標籤設置,因此單獨設置了axis.title.x和axis.text.y。固然,以此類推,也能夠單獨設置axis.title.y和axis.text.y,這樣能夠畫更特別的圖形。
另,上圖還單獨設置了座標軸線(axis.line),以及背景網格線的顏色和大小(panel.grid.major)。相信有了這些單獨的設置,能夠知足大多數畫圖的需求。code

特別注意:若是panel.grid.major 和panel.background = element_blank(),則會看到白底的圖形。更多細節展現,見P152。orm


三、迭代和繪圖模板

上圖繪製中使用了last_plot(),以及經過"+"一步步添加其餘圖層和修改座標軸和圖例,獲得本身想要的圖形。實際工做中,在沒有徹底瞭解數據展現狀況下,首先繪製基礎圖形,而後經過"last_plot() + "一步步獲得本身想要的圖形,好比:
p <- ggplot() # 基礎圖形
last_plot() + geom_line(data = x,aes(dt,click,colour = "blue")) # 畫x數據集中的click隨dt變化趨勢線
last_plot() + geom_line(data = y,aes(dt,click,colour = "red)) # 畫y數據集中click隨dt變化,跟x作一個對比
last_plot() + labs(title = "Campare of Y and X's click",xlab = "Date",ylab = "Click") # 添加標題和座標軸標籤
...
blog

以此類推,一步步獲得本身想要的圖形。 element

另,在不停重複畫圖過程當中,不少圖形使用的標題和座標軸選項,或者顏色面板的設置都是同樣的,所以,咱們能夠製做一個繪圖模板,一次製做,永久使用。 其實很簡單,就是把經常使用的繪圖的設置代碼作個「封裝」,何爲封裝?簡單啦,qplot就是個封裝的函數,咱們也能夠作任意的不一樣的封裝,好比:
xquiet <- scale_x_continuous("",breaks = NULL)
yquiet <- scale_y_continuous("",breaks = NULL)
quiet <- xquiet + yquiet
p <- ggplot(data = x,aes(dt,click,colour = "blue")) + quiet
it

後續畫其餘圖形的時候,若是涉及到scale_x和scale_y的設置編輯,均可以直接"+ quiet",這樣在複雜圖形繪製中省去了不少的麻煩。 每一個人的審美觀和使用習慣都不同,因此本身能夠定作我的繪圖模板,之後就順手拈來,不用每次都吭哧吭哧的去單獨寫代碼。