可視化學(xué)習(xí)筆記(三):ggplot2:散點(diǎn)圖


1、簡單散點(diǎn)圖

使用geom_point()函數(shù)即可繪制,并且在映射中可以使用以下映射參數(shù):

  • shape:指定形狀
  • colour:填充(需要注意的是,fill對point可能不起作用
  • size:修改大小

2、樣式修改

2.1 顏色修改

顏色的手動修改使用以下函數(shù):

scale_colour_manual()
scale_colour_brewer()

2.2 形狀修改

  • 使用scale_shape_manual()函數(shù)可以對形狀進(jìn)行重新修改
  • 使用scale_size_area()函數(shù)可以修改點(diǎn)大?。娣e)
  • 需要注意的是,含有映射shapesize時最好不要用來比較點(diǎn)

3、圖形重疊情況

3.1設(shè)定透明度

使用alpha=#參數(shù)來設(shè)定透明度,降低圖形重疊情況

3.2將數(shù)據(jù)分箱(bin),并用矩形/六邊形表示

  • stat_bin2d()表示矩形分箱
  • stat_binhex()表示六邊形分箱

使用以上兩個函數(shù)時,需要對顏色進(jìn)行調(diào)整,因此用到scale_fill_gradient()函數(shù)

scale_fill_gradient(low='', high='', breaks=, limits=)
  • lowhigh是用于指定最小和最大色階
  • breaks是用于將填充顏色進(jìn)行分割(cut)
  • limits是限定色階的范圍

3.3添加隨機(jī)擾動點(diǎn)

當(dāng)散點(diǎn)圖中其中一個數(shù)據(jù)軸或兩個數(shù)據(jù)軸都對應(yīng)于離散型變量時,也會出現(xiàn)圖形重疊的情況,因此可以給數(shù)據(jù)添加隨機(jī)擾動點(diǎn)

geom_jitter()

4、添加回歸擬合線

4.1擬合直線

使用geom_smooth()函數(shù)可以添加回歸擬合直線

  • se參數(shù)控制置信區(qū)間,當(dāng)se=F時,表示不繪制置信區(qū)間;默認(rèn)繪制
  • level參數(shù)控制置信水平
  • linetype、coloursize三個參數(shù)用于直線進(jìn)行樣式調(diào)整
  • geom_smooth()函數(shù)默認(rèn)使用loess方法(局部加權(quán)多項(xiàng)式回歸)
  • 如果提前映射了colourshape參數(shù),回歸會出現(xiàn)分組回歸的情況

4.2logit回歸曲線

使用stat_smooth()可以設(shè)定回歸參數(shù)

  • method用于指定回歸方法
  • method.args=list()用于傳遞回歸方法的其他參數(shù)給stat_smooth()
  • 如果想基于數(shù)據(jù)進(jìn)行擬合外推,需要添加fullrang=T參數(shù)

4.3對模型添加擬合直線

可以在建立模型后使用predict()函數(shù)預(yù)測,然后通過geom_line函數(shù)來添加模型的擬合線:

#建立模型
model <- lm(heightIn~ ageYear + I(ageYear^2), data=heightweight)
model
summary(model)

#設(shè)定預(yù)測數(shù)據(jù)
xmin <- min(heightweight$ageYear)
xmax <- max(heightweight$ageYear)
predicted <- data.frame(ageYear=seq(xmin, xmax, length.out = 100))

predicted$heightIn <- predict(model, predicted);predicted

#繪圖
sp <- ggplot(heightweight, aes(x=ageYear, y=heightIn)) +
  geom_point(colour="grey40")
sp + geom_line(data=predicted, size=1)

5、添加文本注釋

使用annotate()函數(shù)來對圖形進(jìn)行注釋添加

annotate(geom, x=, y=, label="", parse=F)
  • geom是指定添加注釋類型,如geom="text"表示添加文本注釋
  • xy是用來指定注釋的坐標(biāo)
  • label用來添加注釋內(nèi)容
  • parse默認(rèn)不調(diào)用數(shù)學(xué)表達(dá)式語法,當(dāng)parse=T時會以數(shù)學(xué)表達(dá)式的形式表現(xiàn)注釋

6、添加標(biāo)簽

  • 可以使用annotate()函數(shù)來手動添加個別點(diǎn)的標(biāo)簽
  • 如果需要自動添加標(biāo)簽,則使用geom_text()函數(shù)
geom_text(aes(label=), size=#, vjust=#, hjust=#)
  • 直接將變量映射到label,然后通過size來調(diào)整標(biāo)簽大小避免重合
  • 使用vjusthjust參數(shù)用于對標(biāo)簽位置進(jìn)行調(diào)整;但如果需要自動做出調(diào)整,則在aes映射中對y-axis或x-axis加減一個單位

7、繪制氣泡圖

使用geom_point()函數(shù)和scale_size_area()函數(shù)組合即可繪制出氣泡圖;但實(shí)際上氣泡圖還是散點(diǎn)圖

library(gcookbook) #加載數(shù)據(jù)

cdat <- subset(countries, Year==2009 &
     Name %in% c("Canada", "Ireland", "United Kingdom", "United States", "New Zealand", "Iceland", "Japan", "Luxembourg", "Netherlands", "Switzerland"))

p <- ggplot(cdat, aes(x=healthexp, y=infmortality, size=GDP)) +
  geom_point(shape=21, colour="black", fill="cornsilk")
  
# 將GDP映射給半徑(scale_size_continuous的默認(rèn)值)
p
# 將GDP映射給面積,得到略大的圓圈
p + scale_size_area(max_size=15)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 簡介 文章較長,點(diǎn)擊直達(dá)我的博客,瀏覽效果更好。本文內(nèi)容基本是來源于STHDA,這是一份十分詳細(xì)的ggplot2使...
    taoyan閱讀 51,697評論 7 159
  • 1、簡單折線圖 折線圖的x既可以對應(yīng)離散性變量,也可以對應(yīng)連續(xù)型變量 當(dāng)x對應(yīng)因子變量時,必須使用group=1映...
    100gle閱讀 9,611評論 0 3
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 1、費(fèi)雪及其名著《利息理論》 美國經(jīng)濟(jì)學(xué)家歐文·費(fèi)雪(Irving Fisher,1867—1947),在1930...
    隨思錄閱讀 483評論 0 0
  • 杵築,一個很陌生的名字,這是一座九州大分縣的小城,從別府前往這里,火車僅需20分鐘,九州著名的音速“SONIC”列...
    jcmegodb閱讀 1,427評論 0 2

友情鏈接更多精彩內(nèi)容