當我們看到很多優美的繪圖時,你是否會有據為己有的衝動?我反正是有的。那麼今天我們就為大家介紹一下目前在R語言中流行的繪圖包ggplot2。
1. ggplot2的安裝:install.packages("ggplot2")。
2. ggplot2的繪圖原理: ggplot2的核心理念是將繪圖與數據分離,數據相關的繪圖與數據無關的繪圖分離,並按圖層作圖。
ggplot的繪圖有以下幾個特點:第一,有明確的起始(以ggplot函數開始)與終止(一句語句一幅圖);其二,圖層之間的疊加是靠「+」號實現的,越後面其圖層越高。
ggplot圖的元素可以主要可以概括如下:最大的是plot(指整張圖,包括background和title),其次是axis(包括stick,text,title和stick)、legend(包括backgroud、text、title)、facet這是第二層次,其中facet可以分為外部strip部分(包括backgroud和text)和內部panel部分(包括backgroud、boder和網格線grid,其中粗的叫grid.major,細的叫grid.minor)。
3. ggplot2的函數介紹:
ggplot2裡的所有函數可以分為以下幾類:
用於運算(我們在此不講,如fortify_,mean_等)
初始化、展示繪圖等命令(ggplot,plot,print等)
按變量組圖(facet_等)
真正的繪圖命令(stat_,geom_,annotate),這三類就是實現一個函數一個圖層的核心函數。
微調圖型:嚴格意義上說,這一類函數不是再實現圖層,而是在做局部調整。
aes : 同樣適用於修改geom_XXX() aes參數控制了對哪些變量進行圖形映射,以及映射方式
圖形屬性(aes)橫縱坐標、點的大小、顏色,填充色等
幾何對象函數
描述
geom_abline
線圖,由斜率和截距指定
geom_area
面積圖(即連續的條形圖)
geom_bar
條形圖
geom_bin2d
二維封箱的熱圖
geom_blank
空的幾何對象,什麼也不畫
geom_boxplot
箱線圖
geom_contour
等高線圖
geom_crossbar
crossbar圖(類似於箱線圖,但沒有觸鬚和極值點)
geom_density
密度圖
geom_density2d
二維密度圖
geom_errorbar
誤差線(通常添加到其他圖形上,比如柱狀圖、點圖、線圖等)
geom_errorbarh
水平誤差線
geom_freqpoly
頻率多邊形(類似於直方圖)
geom_hex
六邊形圖(通常用於六邊形封箱)
geom_histogram
直方圖
geom_hline
水平線
geom_jitter
點、自動添加了擾動
geom_line
線
geom_linerange
區間,用豎直線來表示
geom_path
幾何路徑,由一組點按順序連接
geom_point
點
geom_pointrange
一條垂直線,線的中間有一個點(與Crossbar圖和箱線圖相關,可以用來表示線的範圍)
geom_polygon
多邊形
geom_quantile
一組分位數線(來自分位數回歸)
geom_rect
二維的長方形
geom_ribbon
彩虹圖(在連續的x值上表示y的範圍,例如Tufte著名的拿破崙遠徵圖)
geom_rug
觸鬚
geom_segment
線段
geom_smooth
平滑的條件均值
geom_step
階梯圖
geom_text
文本
geom_tile
瓦片(即一個個的小長方形或多邊形)
geom_vline
豎直線
統計變換函數
描述
stat_abline
添加線條,用斜率和截距表示
stat_bin
分割數據,然後繪製直方圖
stat_bin2d
二維密度圖,用矩陣表示
stat_binhex
二維密度圖,用六邊形表示
stat_boxplot
繪製帶觸鬚的箱線圖
stat_contour
繪製三維數據的等高線圖
stat_density
繪製密度圖
stat_density2d
繪製二維密度圖
stat_function
添加函數曲線
stat_hline
添加水平線
stat_identity
繪製原始數據,不進行統計變換
stat_qq
繪製Q-Q圖
stat_quantile
連續的分位線
stat_smooth
添加平滑曲線
stat_spoke
繪製有方向的數據點(由x和y指定位置,angle指定角度)
stat_sum
繪製不重複的取值之和(通常用在三點圖上)
stat_summary
繪製匯總數據
stat_unique
繪製不同的數值,去掉重複的數值
stat_vline
繪製豎直線
標度函數
描述
scale_alpha
alpha通道值(灰度)
scale_brewer
調色板,來自colorbrewer.org網站展示的顏色標度
scale_continuous
連續標度
scale_data
日期
scale_datetime
日期和時間
scale_discrete
離散值
scale_gradient
兩種顏色構建的漸變色
scale_gradient2
3中顏色構建的漸變色
scale_gradientn
n種顏色構建的漸變色
scale_grey
灰度顏色
scale_hue
均勻色調
scale_identity
直接使用指定的取值,不進行標度轉換
scale_linetype
用線條模式來展示不同
scale_manual
手動指定離散標度
scale_shape
用不同的形狀來展示不同的數值
scale_size
用不同大小的對象來展示不同的數值
坐標函數
描述
coord_cartesian
笛卡兒坐標
coord_equal
等尺度坐標(斜率為1)
coord_flip
翻轉笛卡兒坐標
coord_map
地圖投影
coord_polar
極坐標投影
coord_trans
變換笛卡兒坐標
分面函數
描述
facet_grid
將分面放置在二維網格中
facet_wrap
將一維的分面按二維排列
定位函數
描述
position_dodge
並列
position_fill
填充
position_identity
不對位置進行處理
position_jitter
擾動處理
position_stack
堆疊處理
4. ggplot2的應用語法
ggplot(data =, aes(x = , y = )) +
geom_XXX(...)+ ... + stat_XXX(...) + ... +
annotate(...)+ ... + labs(...) +
scale_XXX(...)+ coord_XXX(...) + guides(...) + theme(...) +
facet_XXX(...)
geom :表示幾何對象,它是ggplot中重要的圖層控制對象,因為它負責圖形渲染的類型。
幾何對象(geom_)上面指定的圖形屬性需要呈現在一定的幾何對象上才能被我們看到,這些承載圖形屬性的對象可能是點,可能是線,可能是bar
stat :統計變換比如求均值,求方差等,當我們需要展示出某個變量的某種統計特徵的時候,需要用到統計變換
annotate:添加注釋 #由於設置的文本會覆蓋原來的圖中對應的位置,可以改變文本的透明度或者顏色例:annotate(geom='text')會向圖形添加一個單獨的文本對象 annotate("text",x=23,y=200,parse=T,label ="x[1]==x[2]")
labs : labs(x= "這是 X 軸", y = "這是 Y 軸", title = "這是標題") ## 修改文字
scale_: 標度是一種函數,它控制了數學空間到圖形元素空間的映射。一組連續數據可以映射到X軸坐標,也可以映射到一組連續的漸變色彩。一組分類數據可以映射成為不同的形狀,也可以映射成為不同的大小,這就是與aes內的各種美學(shape、color、fill、alpha)調整有關的函數。
coord_:調整坐標,控制了圖形的坐標軸並影響所有圖形元素. 調整坐標 coord_flip()來翻轉坐標軸。使用xlim()和ylim()來設置連續型坐標軸的最小值和最大值 coord_cartesian(xlim=c(0,100),ylim=c(0,100))
guides:調整所有的text。
theme:調整不與數據有關的圖的元素的函數。theme函數採用了四個簡單地函數來調整所有的主題特徵:element_text調整字體,element_line調整主題內的所有線,element_rect調整所有的塊,element_blank清空。theme(panel.grid =element_blank()) ## 刪去網格線
facet :控制分組繪圖的方法和排列形式。
歡迎大家學習交流: