在 R 中使用 ggplot2 製作圖形視覺化

給 SAS 使用者的 R

Melinda Higgins, PhD

Research Professor/Senior Biostatistician Emory University

ggplot2 套件

ggplot2 六角貼紙標誌

  • ggplot2 是 R 的強大繪圖套件
  • ggplot 中的「GG」代表「圖形語法」
  • ggplot2 以分層方式建構圖形
  • 在基底圖層上加入一個或多個幾何物件
給 SAS 使用者的 R

圖層:基底層

# Create plot for x=sex and y=diameter
ggplot(data = abalone, aes(sex, diameter))
  • ggplot() 定義基底圖層
  • 設定 data = abalone
  • aes 設為 sexdiameter

  • 目前尚未加入任何幾何物件

  • x 軸已對應 sex
  • y 軸已對應 diameter
  • 網格已配置完成

ggplot2 圖形環境,尚未有盒鬚圖

給 SAS 使用者的 R

圖層:加入盒鬚圖 geom

# Add boxplot geometric object or geom
ggplot(data = abalone,
       aes(sex, diameter)) +
  geom_boxplot()
  • 使用加號 + 加入圖層
  • 新增盒鬚圖 geom_boxplot()

  • 產生一系列盒鬚圖

  • 依性別顯示鮑魚直徑
  • F 雌、I 幼體、M

ggplot2 已加入盒鬚圖

給 SAS 使用者的 R

圖層:加入主題

# Add black white theme
ggplot(data = abalone,
       aes(sex, diameter)) +
  geom_boxplot() +
  theme_bw()
  • 使用 theme_bw() 加入「主題」圖層
  • 去除灰色背景
  • 在圖外框加上黑色邊框

ggplot2 盒鬚圖加入黑白主題

給 SAS 使用者的 R

將盒鬚圖 geom 改為小提琴圖 geom

# Change to geom_violin()
ggplot(data = abalone,
       aes(sex, diameter)) +
  geom_violin() +
  theme_bw()
  • geom_violin 取代 geom_boxplot
  • 產生類似小提琴的形狀
  • 反映資料的密度分布
  • 小改動即可得到新圖形

ggplot2 小提琴圖

給 SAS 使用者的 R

單變數長條圖

# Make histogram of shuckedWeight
ggplot(abalone, aes(shuckedWeight)) +
  geom_histogram()
  • 為單一變數建立長條圖
  • 一個變數 = 一個對映
  • 加入 geom_histogram()
  • aes() 設為 shuckedWeight
  • 預設配色需要調整

ggplot2 直方圖全黑

給 SAS 使用者的 R

長條圖加入配色

# Make lines black and fill light blue
ggplot(abalone, aes(shuckedWeight)) +
  geom_histogram(color = "black",
                 fill = "lightblue")
  • 調整圖形參數
  • 設定箱線的 color
  • 設定箱體的 fill 顏色
  • 各選項寫在 ()
  • 圖形更清楚美觀

ggplot2 藍色長條、黑色外框的直方圖

給 SAS 使用者的 R

長條圖加入標題與座標軸標籤

# Add x, y axis labels and title
ggplot(abalone, aes(shuckedWeight)) +
  geom_histogram(color = "black",
                 fill = "lightblue") +
  xlab("Shucked Weight") +
  ylab("Frequency Counts") +
  ggtitle("Shucked Weights Histogram")
  • 為座標軸與標題加入更好的標籤
  • xlab()ylab() 設定軸標籤
  • ggtitle() 設定標題
  • 這張圖已可發佈!

ggplot2 直方圖已加入軸標籤與標題

給 SAS 使用者的 R

製作散佈圖

# Make scatterplot with geom_point()
ggplot(abalone,
       aes(rings, shellWeight)) +
  geom_point()
  • 散佈圖的 aes 需兩個變數
  • geom_point() 加入點
  • 以環數對應殼重的散佈圖

ggplot2 殼重對環數的散佈圖

給 SAS 使用者的 R

散佈圖加入平滑擬合線

# Add smoothed fit line
ggplot(abalone,
       aes(rings, shellWeight)) +
  geom_point() +
  geom_smooth()
  • 在散佈圖上加入 geom_smooth() 平滑線
  • 會包含陰影信賴區間

ggplot2 散佈圖加入平滑擬合線

給 SAS 使用者的 R

依另一變數建立面板

# Add panels using facet_wrap()
ggplot(abalone,
       aes(rings, shellWeight)) +
  geom_point() +
  geom_smooth() +
  facet_wrap(vars(sex))
  • 再為散佈圖加一層
  • 為每個鮑魚性別建立分面面板
  • 加入 facet_wrap() 圖層
  • vars(sex) 指定分面變數

ggplot2 依性別分成 3 個面板的散佈圖

給 SAS 使用者的 R

課程後續內容

  • 第 1 章以簡介繪圖作結
    • ggplot2 繪圖技能基礎
    • 依性別視覺化鮑魚量測
  • 第 2 章教授資料整備技能
    • 清理鮑魚資料集
  • 第 3 章教授資料探索方法
    • 敘述統計、相關與比較檢定
  • 第 4 章教授建模與結果呈現
    • 以量測值預測鮑魚年齡
    • 依性別比較模型
給 SAS 使用者的 R

來為鮑魚畫些圖吧

給 SAS 使用者的 R

Preparing Video For Download...