ggplot作圖系統(tǒng)在R預言諸多可視化包中之所以如此的風靡,,除了它擁有自己的圖層理念之外,我覺得還要歸功于它對于圖表細節(jié)元素的靈活調(diào)整,。 對于ggplot的初學者而言,,可能沒有太多的在意圖表的主題是否優(yōu)雅,配色是否美觀,,僅求能夠準確無誤的出圖就OK了,。 但是如果僅限于此,那么使用ggplot作圖真的就是殺雞用了宰牛刀了,。 就拿默認的圖表來說,,雖然你只靠兩句代碼就可以跑出來一幅還算及格的圖表,可是ggplot語法博大精深,,背后給你的代碼默認匹配的參數(shù)不計其數(shù),。 其中有一組特別龐大的參數(shù)組就是theme()參數(shù): 默認的圖表再不添加任何自定義主題和配色的情況下,軟件會給出默認的主題和配色: 默認主題是theme_gray,中一共給出了兩套主題,,分別是theme_gray,、theme_bw 接下來我們來一步步驗證: 首先加載包: library(ggplot2) library(reshape2) library(ggtheme) data<-data.frame(name =="" c('蘋果','谷歌','臉書','亞馬遜','騰訊'),conpany="c('Apple','Google','Facebook','Amozon','Tencent'),Sale2013" =="" c(5000,3500,2300,2100,3100),sale2014="c(5050,3800,2900,2500,3300),Sale2015" =="" c(5050,3800,2900,2500,3300),sale2016="">-data.frame(name> mydata<> ggplot(mydata,aes(Conpany,Sale,fill=Year))+geom_bar(stat='identity') 以上代碼(已經(jīng)簡化的不能再簡化了,不夸張的說,,再少一個標點符號,,就要報錯了)跑出來的默認堆積條形圖。 可是在R預言可視化這個領(lǐng)域內(nèi),,以上圖表絕對是一個爛大街的貨色,,怎么說呢,,因為你不修改主題,它搭配的主題永遠都是theme_gray ggplot(mydata,aes(Conpany,Sale,fill=Year))+geom_bar(stat='identity')+theme_gray() ggplot(mydata,aes(Conpany,Sale,fill=Year))+geom_bar(stat='identity')+theme_bw() 以上兩個圖表分別套用了默認主題theme_gray()和備用主題theme_bw(),,所以看去來前者與第一幅圖無異,,后者則差別很大。 雖然看起來修改主題好像很簡單的樣紙,,殊不知,,在主題內(nèi)部,該函數(shù)是設(shè)定了不計其數(shù),、讓人眼花繚亂的參數(shù),。 你可以通過theme_gray 查看主題函數(shù)內(nèi)的參數(shù)配置: theme_gray theme_bw 哈哈看傻眼了吧,其實仔細捋一捋,,主題函數(shù)內(nèi)的參數(shù)雖然繁雜,,但是絕對算不上晦澀。 以下是自己整理的主題參數(shù)列表: 通過設(shè)定主題參數(shù),,你也可以制作專屬的圖表主題模板,。 接下來我將設(shè)定一個簡單的主題模板用于修改以上的圖表主題,; theme_xmf <- function(...,="" bg='white'>-> require(grid) theme_classic(...) + theme(rect=element_rect(fill=bg), plot.margin=unit(rep(0.5,4), 'lines'), panel.background=element_rect(fill='transparent', color='transparent'), panel.border=element_rect(fill='transparent', color='transparent'), panel.grid=element_blank(), axis.title = element_text(color='black', vjust=0.1), axis.ticks.length = unit(-0.3,'lines'), axis.ticks = element_line(colour = 'grey20'), legend.title=element_blank(), legend.key=element_rect(fill='transparent', color='transparent')) } 套用自己的自定義主題: ggplot(mydata,aes(Conpany,Sale,fill=Year))+geom_bar(stat='identity')+theme_xmf() 這里要強調(diào)一點,,主題中是不包含顏色模板設(shè)定的,因為顏色的使用場景及類別比較復雜,,會有專門的顏色標度進行設(shè)定,,其實就是scale_colour_xxx()/scale_fill_xxx()進行設(shè)定(分別為點、線色以及區(qū)域色) 這里暫且使用一個RColorbrewer色板中的漸變色裝飾一下,,不做過多解釋,,下一節(jié),專門討論顏色,。 ggplot(mydata,aes(Conpany,Sale,fill=Year))+geom_bar(stat='identity')+theme_xmf()+scale_fill_brewer(palette='Blues') 至于圖表中的顏色填充順序和圖例相反,,這個問題只需追加一句代碼即可: ggplot(mydata,aes(Conpany,Sale,fill=Year))+geom_bar(stat='identity')+theme_xmf()+scale_fill_brewer(palette='Blues')+guides(fill = guide_legend(reverse = TRUE)) 其他的細節(jié)設(shè)定,下節(jié)講,。 |
|
來自: andyandygo > 《待分類》