【ggplot2繪圖二:散點圖】

2021.4.23
持續更新中。。。

參考:《R數據可視化手冊》、學術數據分析及可視化

1. 理解數據與圖層

library(ggplot2)
set.seed(999)
diamonds <- diamonds[sample(1:53940, 5000, replace = F),]
#數據寫在底層,則對后續所有圖層有效
ggplot(diamonds, aes(carat, price, color = cut)) +
  geom_point(shape = 18)
#數據寫在單一圖層在,則只對該圖層有效
ggplot() +
  geom_point(data = diamonds, aes(carat, price, color = cut), shape = 18)

數據在初始圖層ggplot()中定義時,對后續所有圖層有效,當多組數據時,可在每個圖層分別定義數據


2. 簡單散點圖

library(ggplot2)
library(tidyr)

df <- iris
#修改表頭
colnames(df) <- c('SepalL','SepalW','PetalL','PetalW','Species')
#寬數據變長數據
df <- gather(df, Index, Value, -Species)
#將Index和Value變量映射x軸和y軸,同時將Species分類變量映射顏色和形狀
ggplot(df, aes(Index, Value, color = Species, shape = Species))+
  #設置點的大小,透明度,類型
  geom_point(size = 3, alpha = .5, shape = 18)+
  #設置每個點的文本,去重復,文本位置
  geom_text(aes(label = Species), check_overlap = TRUE, vjust=4, hjust=0)
##添加單個標簽文本
##annotate('text', x = 6, y = 7.5, label = 'Scatter plot with a linear fit line',
##         color = 'red', fontface = 'italic')

  1. 映射給顏色或大小的變量是分類變量時,則是對數據進行分組;若映射的是連續性變量,則是一個漸變過程。
  2. scale_shape_manual()scale_color_brewer函數可以后續自定義圖形和顏色。scale_color_brewer()調色盤選擇:https://www.datavis.ca/sasmac/brewerpal.html

3. 散點圖 +擬合線

3.1 線性擬合

ggplot(iris, aes(Sepal.Length, Petal.Length))+
  geom_point()+
  #設置擬合線是否顯示置信域,顏色,大小和類型
  geom_smooth(method = 'lm', formula = y ~ x, se = F, 
              color = 'red', size = 2, linetype = 3)
##若要虛化擬合線,需要換一個函數
##geom_line(stat = 'smooth', method = 'lm', se = F,
##         color = 'red', size = 2, linetype = 6, alpha = .2)
  1. 可選的形狀和線型:
    形狀和線型
  2. color參數設置在aes()之外,則所有的變量都設置成一個顏色,而在aes()之內,會給不同的因子或者數值上色
  3. 模型除了y ~ x之外,也可以用y ~ log(x)y ~ poly(x, 2)y ~ poly(x, 3)等多項式

3.2 添加新構建模型的擬合線

思路:首先創建回歸模型,然后根據模型計算變量和預測值的大小,最后繪制回歸線即可。

library(ggplot2)
library(gcookbook)
rm(list=ls())
#用lm()函數創建回歸模型
model <-  lm(heightIn ~ ageYear + I(ageYear^2), heightweight)
#創建包含變量ageYear最小值和最大值的列
xmin <-  min(heightweight$ageYear)
xmax <-  max(heightweight$ageYear)
predicted <-  data.frame(ageYear=seq(xmin, xmax, length.out=100))
#計算變量heightIn的預測值,之后predicted包含兩個變量ageYear和heightln
predicted$heightIn <-  predict(model, predicted)

#繪制點圖
p <- ggplot(heightweight, aes(x=ageYear, y=heightIn)) +
     geom_point()+
#添加回歸曲線
     geom_line(data=predicted, size=1)

4. 繪制兩組來自不同數據的點圖

library(tidyr)
library(ggplot2)
df <- iris
head(df)
#修改表頭
colnames(df) <- c('SpealL', 'SpepalW', 'PetalL', 'PetalW', 'Species')
#寬數據變長數據
df <- gather(df, Index, Value, -Species)
df

ggplot()+
  geom_point(data = df, aes(Species, Value, color =Index))+
  geom_point(data = iris, aes(Species, Sepal.Width, color = Species))

繪制多組不同數據時ggplot()不接任何參數,后續繪圖函數調用參數data =分別指明具體的數據名。


5. 氣泡圖

ggplot(mtcars, aes(wt, mpg, color = factor(cyl)))+
  #將cyl影射給大小
  geom_point(aes(size = cyl))+
  #添加坐標
  scale_size(breaks = c(4,6,8))
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374

推薦閱讀更多精彩內容