一個所有R users都會使用到的繪圖套件-ggplot2 (3.4.2)

前言

資料視覺化是數據分析與研究中非常重要的一環,而ggplot2套件則是R語言中功能非常強大的一個資料視覺化套件,幾乎所有R使用者都會用到它。在本篇中我們會簡單介紹ggplot2的基本操作、下載以及幾種常見的繪圖方法。

ggplot2套件安裝

首先,我們要確保已經安裝了R以及RStudio軟體,然後在 RStudio裡輸入以下指令來安裝 ggplot2 套件:

install.packages("ggplot2")

安裝完成後,可以使用以下代碼來載入ggplot2:

library(ggplot2)

ggplot2載入環境後,就可以開始進行資料的視覺化輸出了。

ggplot2常用的繪圖指令

接下來,我們將介紹ggplot2的基本操作,以下是幾個常用的ggplot2繪圖指令:

  • 散佈圖:用 geom_point() 函數來畫。
  • 折線圖:用 geom_line() 函數來畫。
  • 直方圖:用 geom_histogram() 函數來畫。
  • 箱形圖:用 geom_boxplot() 函數來畫。
  • 熱度圖:用 geom_tile() 函數來畫。

我們以R 內建的資料集mtcars當作例子,你可以直接在 R 裡使用以下指令來將資料集叫出:

library(ggplot2)
data(mtcars)
head(mtcars)

head() 函數是用來顯示一個資料集或向量的前幾筆資料,預設會顯示前 6 筆。如果需要顯示更多或更少的資料,可以在 head() 函數中指定顯示的行數,例如 head(mtcars, n = 10) 將顯示前 10 筆資料。

1. 散佈圖

接著,我們畫出 mtcars 資料集中「wt」與「mpg」之間的散佈圖,並以「cyl」來進行顏色分類,最後加上 x 軸與 y 軸的標示:

ggplot(data = mtcars, aes(x = wt, y = mpg, color = factor(cyl))) + 
  geom_point() + labs(x = "Weight (lb/1000)", y = "Miles per Gallon", color = "Cylinders")

噹噹!結果不到一秒就出來囉,如果各位有興趣,可以根據自己的需求,修改資料集的欄位以及繪圖函數的參數,來自定義你想要的結果。

2. 折線圖

要畫 ggplot2 的折線圖,可以使用 geom_line() 函數來畫。以下是一個簡單的範例,說明如何畫 ggplot2 的折線圖:

# 建立圖形物件,設定 x 軸為 mpg,y 軸為 hp
  ggplot(mtcars, aes(x = mpg, y = hp)) +
# 畫折線,設定線條顏色為紅色
  geom_line(color = "red") +
# 設定圖形標題和 x, y 軸標籤
  labs(title = "折線圖範例", x = "每加侖英里數", y = "馬力")

這個範例中,我們使用 ggplot() 函數繪圖,設定 mtcars 資料集的 mpg 欄位為 x 軸,hp 欄位為 y 軸。然後使用 geom_line() 函數畫出折線圖,並設定線條的顏色為紅色,最後使用 labs() 函數設定圖形的標題和 x, y 軸的標籤。

[註]在 R 語言中,使用 # 符號可以在語句後面添加註解,幫助自己或其他人理解程式碼的作用和邏輯。

3. 直方圖

ggplot2 中,可以使用 geom_histogram() 函數來畫直方圖。下面是一個簡單的範例,說明如何畫一個直方圖:

# 建立圖形物件,設定 x 軸為資料集中的 mpg 欄位
  ggplot(mtcars, aes(x = mpg)) +
# 畫直方圖,設定區間寬度為 5,邊框顏色為黑色,填充顏色為淺藍色
  geom_histogram(binwidth = 5, color = "black", fill = "lightblue") +
# 設定圖形標題和 x, y 軸標籤
  labs(title = "直方圖範例", x = "每加侖英里數", y = "頻率")

這個範例中,我們使用 ggplot() 函數繪圖,設定 mtcars 資料集的 mpg 欄位為 x 軸。然後使用 geom_histogram() 函數畫出直方圖,並設定區間寬度為 5,邊框顏色為黑色,填充顏色為淺藍色,最後使用 labs() 函數設定圖形的標題和 x, y 軸的標籤。

4. 箱形圖

ggplot2 中,我們可以使用 geom_boxplot() 函數來畫箱形圖。下面是一個簡單的範例,說明如何畫一個箱形圖:

# 建立圖形物件,設定 x 軸為資料集中的 cyl 欄位,y 軸為資料集中的 mpg 欄位
  ggplot(mtcars, aes(x = factor(cyl), y = mpg)) +
# 畫箱形圖,設定填充顏色為淺藍色,線條顏色為黑色
  geom_boxplot(fill = "lightblue", color = "black") +
# 設定圖形標題和 x, y 軸標籤
  labs(title = "箱形圖範例", x = "汽缸數", y = "每加侖英里數")

這個範例中,我們使用 ggplot() 函數繪圖,設定 mtcars 資料集的 cyl 欄位為 x 軸,mpg 欄位為 y 軸。然後使用 geom_boxplot() 函數畫出箱形圖,並設定填充顏色為淺藍色,線條顏色為黑色,最後使用 labs() 函數設定圖形的標題和 x, y 軸的標籤。

5. 熱度圖

ggplot2 中,可以使用 geom_tile() 函數來畫熱度圖。下面是一個簡單的範例,說明如何畫一個熱度圖:

# 建立資料框
df <- data.frame( x = rep(1:5, 5),y = rep(1:5, each = 5),z = rnorm(25))
# 建立圖形物件,設定 x 軸為 x 欄位,y 軸為 y 欄位,填充顏色為 z 欄位的數值
ggplot(df, aes(x = x, y = y, fill = z)) +
# 畫熱度圖,設定邊框顏色為白色
geom_tile(color = "white") +
# 設定填充顏色的範圍,以及圖例的標題和標籤
scale_fill_gradient(low = "blue", high = "red", name = "數值", labels = scales::number) +
# 設定圖形標題和 x, y 軸標籤
labs(title = "熱度圖範例", x = "x 軸標籤", y = "y 軸標籤")

這個範例中,我們建立了一個名為 df 的資料,其中包含三個欄位:xyz,然後使用 ggplot() 函數繪圖。設定 df 資料的 x 欄位為 x 軸,y 欄位為 y 軸,z 欄位的數值為填充顏色,接著使用 geom_tile() 函數畫出熱度圖,設定邊框顏色為白色,使用 scale_fill_gradient() 函數設定填充顏色的範圍,以及圖例的標題和標籤。最後使用 labs() 函數設定圖形的標題和 x, y 軸的標籤。

自訂圖例

散佈圖、折線圖、直方圖、箱形圖和熱度圖是我們最常使用的結果呈現圖示,其餘的繪圖方法與技巧,可以到ggplot2官網參考詳細解說。

當我們在繪製一個圖示時,我們可能需要顯示一些額外的信息,這時候我們可以使用labs()函數來自訂標籤。這個函數可以用來改變標題,x軸標籤和y軸標籤。此外,我們可以使用scale_color_manual()scale_shape_manual()函數來自訂顏色和形狀。下面是一個簡單的範例,說明如何畫一個自訂的圖示:

data(iris)
head(iris)
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species, shape = Species)) +
  geom_point(size = 4) +
  labs(title = "Sepal Length vs. Sepal Width by Species", 
       x = "Sepal Length", 
       y = "Sepal Width",
       color = "Species",
       shape = "Species") +
  scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"), 
                     labels = c("Setosa", "Versicolor", "Virginica")) +
  scale_shape_manual(values = c(0, 1, 2), 
                     labels = c("Setosa", "Versicolor", "Virginica"))

在這個例子中,我們使用labs()函數來設置標題,x軸標籤,y軸標籤,顏色標籤和形狀標籤。我們使用scale_color_manual()函數來自訂顏色,並使用scale_shape_manual()函數來自訂形狀。

儲存圖檔

ggsave ggplot2 套件提供的一個函數,可以將 ggplot2 繪製出來的圖示存成圖片檔案。下面是 ggsave 函數的基本語法:

# 建立資料框
df <- data.frame(x = c(1, 2, 3, 4, 5),y = c(2, 4, 6, 8, 10))
# 繪製折線圖
p <- ggplot(df, aes(x, y)) +
 geom_line() +
 ggtitle("示意折線圖")
p

# 存檔,更改成自己電腦的路徑
ggsave(path = "C:/Users/Administrator/Desktop", filename = "my_plot.jpeg", width=40, height=40, dpi = 300, units = 'cm')

其中path 是指定要存檔的路徑,filename 是指定要存檔的檔名,widthheight 參數是指定圖形的寬度和高度,dpi 參數是指定圖片的解析度,預設為 300 dpi,units 參數是指定圖形的單位,可以是英寸(”in”)、厘米(”cm”)或毫米(”mm”)。

結語

ggplot2 是 R 語言中最流行的繪圖套件之一,它不僅提供了強大的繪圖功能,而且非常容易學習和使用。網絡上有大量的學習資源和示例,大家可以通過ggplot2官網、youtube以及各位R大神們的教學來深入了解 ggplot2 更多的使用方法和技巧。

您的分享,我非常感激!!!
MillionQuesn
MillionQuesn

一個旅居台灣的異鄉人,分享突然靈光一現的亮點。

文章: 46

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

error: Alert: Content selection is disabled!!