文章較長(zhǎng)點(diǎn)擊直達(dá)我的博客,瀏覽效果更好。本文內(nèi)容基本是來(lái)源于STHDA,這是一份十分詳細(xì)的ggplot2使用指南,因此我將其翻譯成中文,一是有助于我自己學(xué)習(xí)理解,另外其他R語(yǔ)言愛(ài)好者或者可視化愛(ài)好者可以用來(lái)學(xué)習(xí)。翻譯過(guò)程肯定不能十全十美,各位讀者有建議或改進(jìn)的話,十分歡迎發(fā)Email(tyan@zju.edu.cn)給我。
ggplot2是由HadleyWickham創(chuàng)建的一個(gè)十分強(qiáng)大的可視化R包。按照ggplot2的繪圖理念,Plot(圖)=data(數(shù)據(jù)集)+Aesthetics(美學(xué)映射)+Geometry(幾何對(duì)象):
在ggplot2中有兩個(gè)主要繪圖函數(shù):qplot()以及ggplot()。
由ggplot2繪制出來(lái)的ggplot圖可以作為一個(gè)變量,然后由print()顯示出來(lái)。
根據(jù)數(shù)據(jù)集ggplot2提供不同的方法繪制圖形,主要是為下面幾類(lèi)數(shù)據(jù)類(lèi)型提供繪圖方法:
安裝ggplot2提供三種方式:
加載
本文將使用數(shù)據(jù)集mtcars。
qplot()類(lèi)似于R基本繪圖函數(shù)plot(),可以快速繪制常見(jiàn)的幾種圖形:散點(diǎn)圖、箱線圖、小提琴圖、直方圖以及密度曲線圖。其繪圖格式為:
其中:
也可以添加平滑曲線
還有其他參數(shù)可以修改,比如點(diǎn)的形狀、大小、顏色等
箱線圖
小提琴圖
點(diǎn)圖
直方圖
密度圖
上文中的qplot()繪制散點(diǎn)圖:
在ggplot()中完全可以如下實(shí)現(xiàn):
改變點(diǎn)形狀、大小、顏色等屬性
繪圖過(guò)程中常常要用到轉(zhuǎn)換(transformation),這時(shí)添加圖層的另一個(gè)方法是用stat_*()函數(shù)。下例中的geom_density()與stat_density()是等價(jià)的
等價(jià)于
使用數(shù)據(jù)集wdata,先計(jì)算出不同性別的體重平均值
先繪制一個(gè)圖層a,后面逐步添加圖層
可能添加的圖層有:
改變顏色
可以通過(guò)修改不同屬性如透明度、填充顏色、大小、線型等自定義圖形:
使用以下函數(shù):
根據(jù)sex修改顏色,將sex映射給line顏色
修改填充顏色以及透明度
添加均值線以及手動(dòng)修改顏色
將sex映射給顏色
手動(dòng)修改顏色
y軸顯示為密度
修改顏色以及線型
將sex映射給線顏色
修改填充顏色
使用數(shù)據(jù)集mtcars,先創(chuàng)建一個(gè)ggplot圖層
可能添加的圖層有:
將變量cyl映射給點(diǎn)的顏色和形狀
自定義顏色
可以添加回歸曲線
散點(diǎn)圖+回歸線
使用loess方法
將變量映射給顏色和形狀
使用數(shù)據(jù)集faithful
實(shí)際上geom_jitter()是geom_point(position=jitter)的簡(jiǎn)稱(chēng),下面使用數(shù)據(jù)集mpg
增加抖動(dòng)防止重疊
其中兩個(gè)參數(shù):
參數(shù)label用來(lái)指定注釋標(biāo)簽
使用數(shù)據(jù)集diamonds
創(chuàng)建ggplot圖層,后面再逐步添加圖層
可添加的圖層有:
geom_bin2d()將點(diǎn)的數(shù)量用矩形封裝起來(lái),通過(guò)顏色深淺來(lái)反映點(diǎn)密度
設(shè)置bin的數(shù)量
geom_hex()依賴(lài)于另一個(gè)R包hexbin,所以沒(méi)安裝的先安裝:
修改bin的數(shù)目
主要是如何通過(guò)線來(lái)連接兩個(gè)變量,使用數(shù)據(jù)集economics。
先創(chuàng)建一個(gè)ggplot圖層,后面逐步添加圖層
可添加的圖層有:
使用數(shù)據(jù)集ToothGrowth,其中的變量len(Toothlength)是連續(xù)變量,dose是離散變量。
創(chuàng)建圖層
可添加的圖層有:
添加有缺口的箱線圖
按dose分組映射給顏色
將dose映射給填充顏色
按supp進(jìn)行分類(lèi)并映射給填充顏色
添加中值點(diǎn)
與箱線圖結(jié)合
將dose映射給顏色進(jìn)行分組
添加中值點(diǎn)