羅德興老師的教學歷程檔案 - 107-1 資訊科技大數據分析 - ggplot繪圖練習
 

企業資訊與管理系
助理教授/日導
羅德興


歷程檔案 Portfolio

    ggplot繪圖練習

    # ex-daimonds.r
    # https://blog.gtwang.org/r/ggplot2-tutorial-basic-concept-and-qplot/
    # for R-3.5.1
    # B3
     
     
    setwd("d:/temp0922")
    getwd()
     
    # 安裝 ggplot2 套件
    # 在使用 ggplot 繪圖之前,請先安裝 ggplot2 這個 R 套件,
    # 這個套件在 R 官方的套件庫中就有收錄,使用 install.packages 安裝即可:
     
    install.packages("ggplot2")
     
    # 接著載入 ggplot2 套件:
    library(ggplot2)
     
    # qplot 函數
    # qplot 函數是 ggplot 系統中最基本的一個繪圖函數,它的設計類似傳統 plot 函數,
    # 方便讓初次使用 ggplot 的使用者快速上手,繪製一些基本的圖形。
     
    # 這裡我們以一組 R 內建的 diamonds 資料集來示範 qplot 的用法,
    # 這組資料預設就內建在 ggplot2 套件中,在 ggplot2 套件安裝後即可使用。
     
    # diamonds 資料集中包含了大約五萬多顆鑽石的資料,
    # 其中包含鑽石的 4C 品質指標,亦即顏色(color)、淨度(clarity)、切磨(Cut)與克拉(carat),
    # 另外還包含了幾個鑽石的尺寸資訊,詳細說明可參考 diamonds 的線上手冊。
    # 首先我們用 head 稍微看一下 diamonds 資料集中的實際資料:
     
    head(diamonds)
     
    # 由於 diamonds 資料集的資料有五萬多筆,有些圖形會需要使用較少量的資料做示範,
    # 所以我們另外抽樣出 100 筆,儲存在 diamonds.subset 這個 data frame 中:
     
    set.seed(5)
    diamonds.subset <- diamonds[sample(nrow(diamonds), 100), ]
     
    # 基本用法
    # qplot 的用法與傳統的 plot 類似,前兩個參數分別是 x 軸與 y 軸的座標資料:
     
    qplot(diamonds$carat, diamonds$price)
     
    # 散佈圖
     
    # 另外也可以使用 data 參數指定資料來源的 data frame,這種方式會讓指令比較簡潔:
     
    qplot(carat, price, data = diamonds)
     
    # 散佈圖
     
    # 這張圖顯示了鑽石的價格(price)與它的克拉數(carat)有明顯的關係,
    # 不過這個關係看起來不是線性的,我們可以將變數透過對數(log)轉換一下:
     
    qplot(log(carat), log(price), data = diamonds)
     
    # 散佈圖
     
    # 經過對數轉換之後,看起來就呈現比較好的線性關係。
     
    # 我們也可以使用多個變數進行運算之後,作為 x 軸或 y 軸的座標值:
     
    qplot(carat, x * y * z, data = diamonds)
     
    # 散佈圖
     
    # 這裡我們拿 diamonds 的 x、y、z 三個變數相乘,當作 y 軸的座標,畫出與 carat 的關係圖,
    # 看起來大部分鑽石的體積都跟重量成正比,也就是密度都差不多,不過也有許多 outliers。
     
    # 圖形樣式
    # qplot 有提供一些參數可以讓使用者更改資料點的顏色、大小等樣式,而且在使用上會比傳統的 plot 函數更方便,
    # 在使用 plot 更改資料點的樣式時,使用者必須自行將類別型的資料轉換為 plot 可以接受的數值或名稱
    # (例如 red、blue 等),而 qplot 則是可以自動處理這些繁瑣的動作,並且在圖形上加入圖示說明(legend)。
     
    # 假設我們想要依據 diamonds 中的 color 變數來替資料點著色,區別不同顏色的鑽石,可以使用 color 參數:
     
    qplot(carat, price, data = diamonds.subset, color = color)
     
    # 散佈圖
     
    # 若要以資料點的形狀區分資料,可使用 shape:
     
    qplot(carat, price, data = diamonds.subset, shape = cut)
     
    # 散佈圖
     
    # 資料點的顏色與形狀都是屬於 ggplot 系統上的美學對應。
     
    # 這裡的鑽石資料總共有五萬多筆,一次畫在同一張圖形上會造成大量的資料點重疊問題,看不出實際的資料分佈,
    # 我們將資料點加上透明度的參數,這樣可以比較容易辨識實際的資料分佈情況:
     
    qplot(carat, price, data = diamonds, alpha = I(1/10))
     
    # 散佈圖
     
    qplot(carat, price, data = diamonds, alpha = I(1/100))
     
    # 散佈圖
     
    # 隨著資料類型的不同,適合的資料呈現方式也不同,例如類別型的資料就適合使用顏色、形狀來區隔,
    # 而若是連續型的資料則可以使用資料點的大小來表示;
    # 至於資料量的多寡也會有影響,
    # 資料量多的時候,除了使用透明度的技巧,也可以考慮以繪圖面(facet)繪出多張圖形的方式,
    # 避免過多的資料擠在同一張圖上難以區分。
    全部共 0則留言
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

    中華科技大學數位化學習歷程 - 意見反應