Tag: data viz

  • Altair: สอนวิธีสร้างกราฟ Data Visualisation ใน Python

    Altair: สอนวิธีสร้างกราฟ Data Visualisation ใน Python

    Data visualisation (data viz) เป็นการแสดงข้อมูลผ่านภาพกราฟิก เพื่อช่วยในการนำเสนอและทำความเข้าใจข้อมูล

    Altair เป็น package ใน Python สำหรับสร้างกราฟข้อมูล ซึ่งมีจุดเด่นกว่า packages ยอดนิยมอย่าง Matplotlib และ Seaborn อยู่ 2 ข้อ:

    1. Declarative syntax: ใช้งานง่ายด้วยการเขียนที่เน้นสิ่งที่ต้องแสดงผล (what) แทนการกำหนดว่าจะแสดงอย่างไร (how)
    2. Interactive plotting: สามารถสร้างกราฟแบบ interactive ได้

    ในบทความนี้ ผมจะพาทุกคนไปดูวิธีใช้ Altair เพื่อสร้างกราฟใน Python กัน

    บทความนี้จะแบ่งเป็น 3 ส่วน:

    1. Dataset: แนะนำตัวอย่างข้อมูลที่จะใช้
    2. Basic plotting: การสร้างกราฟพื้นฐานใน Altair
    3. Customisation: การปรับแต่งกราฟใน Altair

    ถ้าพร้อมแล้ว ไปเริ่มกันเลย


    1. 📦 Dataset ตัวอย่าง
    2. 📊 พื้นฐานการสร้างกราฟใน Altair
    3. 🎨 วิธีปรับแต่งกราฟใน Altair
      1. 🚸 การเพิ่ม Title & Labels
      2. 🔢 การตกแต่ง Data Points
      3. 🥉 การเพิ่ม Third Variable
    4. 💪 บทสรุป
    5. 🫵 Your Turn
    6. 📃 References

    📦 Dataset ตัวอย่าง

    ในบทความนี้ เราจะใช้ cars dataset จาก vega_datasets ซึ่งมีข้อมูลรถ เช่น:

    • ชื่อรุ่น
    • ระดับการกินน้ำมัน
    • แรงม้า
    • จำนวนลูกสูบ

    เราสามารถโหลด dataset ได้แบบนี้:

    Python
    # Import the package
    from vega_datasets import data
    # Load the dataset
    cars = data.cars()
    # Preview the dataset
    cars.head()

    ผลลัพธ์:


    📊 พื้นฐานการสร้างกราฟใน Altair

    การสร้างกราฟใน Altair ประกอบด้วย 3 ส่วน:

    ComponentFor
    .Chart()กำหนด dataset
    .mark_*()กำหนดประเภทกราฟ (เช่น กราฟแท่ง)
    .encode()กำหนดการแสดงข้อมูล (เช่น แกน x-y, สี, รูปทรง)

    ทั้ง 3 ส่วนทำงานรวมกันแบบนี้:

    Python
    # Import the package
    import altair as alt
    # Create a scatter plot
    (
    alt.Chart(cars) # Set dataset
    .mark_point() # Set plot type
    .encode(
    x="Miles_per_Gallon",
    y="Horsepower"
    ) # Map data
    )

    ผลลัพธ์:

    Note: .mark_*() เรากำหนดประเภทกราฟได้ เช่น:

    MarkPlot
    .mark_boxplot()Box plot
    .mark_point()Scatter plot
    .mark_line()Line plot
    .mark_bar()Bar plot

    🎨 วิธีปรับแต่งกราฟใน Altair

    เรามาดูการปรับแต่ง 3 องค์ประกอบในกราฟกัน:

    1. Title and labels: กำหนดชื่อกราฟและแกนข้อมูล
    2. Data points: ปรับแต่งการแสดงข้อมูล (เช่น สี รูปทรง)
    3. Third variable: การเพิ่มตัวแปรที่ 3

    .

    🚸 การเพิ่ม Title & Labels

    เราสามารถเพิ่มชื่อกราฟและชื่อแกนได้ด้วย 3 คำสั่ง:

    SyntaxFor
    .properties(title)ชื่อกราฟ
    alt.X()ชื่อแกน x
    alt.Y()ชื่อแกน y

    ตัวอย่าง:

    Python
    # Customise the title and axis labels
    (
    alt.Chart(cars)
    .mark_point()
    # Add axis labels
    .encode(
    x=alt.X("Miles_per_Gallon", title="MPG"),
    y=alt.Y("Horsepower", title="Horsepower")
    )
    # Add the title
    .properties(
    title="Horsepower vs Fuel Consumption"
    )
    )

    ผลลัพธ์:

    .

    🔢 การตกแต่ง Data Points

    เราสามารถปรับการนำเสนอข้อมูล โดยกำหนด parametre ใน .mark_*() เช่น:

    ParametreProperty
    colorสี
    shapeรูปทรง
    sizeขนาด
    opacityความโปร่งแสง

    ตัวอย่าง:

    Python
    # Customise data points
    (
    alt.Chart(cars)
    # Adjust colour, shape, opacity, size
    .mark_point(
    color="red",
    shape="diamond",
    size=50,
    opacity=0.5
    )
    .encode(
    x=alt.X("Miles_per_Gallon", title="MPG"),
    y=alt.Y("Horsepower", title="Horsepower")
    )
    .properties(
    title="Horsepower vs Fuel Consumption"
    )
    )

    ผลลัพธ์:

    .

    🥉 การเพิ่ม Third Variable

    เราสามารถเพิ่มตัวแปรอื่น ๆ ได้โดยกำหนด parametre ใน .encode() เช่น:

    ParametreProperty
    colorสี
    shapeรูปทรง
    sizeขนาด
    opacityความโปร่งแสง

    ตัวอย่าง:

    Python
    # Add a third variable
    (
    alt.Chart(cars)
    .mark_point(color="red")
    .encode(
    x=alt.X("Miles_per_Gallon", title="MPG"),
    y=alt.Y("Horsepower", title="Horsepower"),
    # Add as colours
    color="Origin"
    )
    .properties(
    title="Horsepower vs Fuel Consumption"
    )
    )

    ผลลัพธ์:


    💪 บทสรุป

    Altair เป็นเครื่องมือสร้างกราฟที่ใช้งานง่ายใน Python โดยมีส่วนประกอบ 3 ส่วนหลัก:

    (
    alt.Chart()
    .mark_*()
    .encode()
    )

    และสามารถปรับแต่งได้โดยการกำหนด parametre ใน:

    1. .mark_*(): ประเภทกราฟ
    2. .encode(): สำหรับการนำเสนอตัวแปร
    3. .properties(): สำหรับชื่อกราฟ

    🫵 Your Turn

    หลังอ่านบทความนี้กันแล้ว ลองมาใช้ Altair กันนะครับ


    📃 References

    Intro to Altair:

    Using Altair:

    Comparing Altair with other packages:

  • วิธีใช้ plot() เพื่อสร้างกราฟง่าย ๆ ในภาษา R — ตัวอย่างจาก trees dataset

    วิธีใช้ plot() เพื่อสร้างกราฟง่าย ๆ ในภาษา R — ตัวอย่างจาก trees dataset

    Data visualisation เป็นเครื่องมือที่สำคัญในการวิเคราะห์ข้อมูล เพราะช่วยให้เราทำความเข้าใจและสื่อสารเกี่ยวกับข้อมูลได้ง่าย

    plot() สำหรับสร้างกราฟอย่างง่ายในภาษา R

    ในบทความนี้ เราจะมาดูวิธีใช้ plot() เบื้องต้นกัน

    บทความนี้แบ่งเป็น 3 ส่วน:

    1. Syntax: วิธีเขียน plot()
    2. Basics: พื้นฐานการใช้ plot()
    3. Decoration: การตกแต่งกราฟ
    4. Add-on: การเพิ่มข้อมูลในกราฟ

    ถ้าพร้อมแล้ว ไปเริ่มกันเลย


    1. 🌲 Example Dataset: trees
    2. 💻 Syntax
    3. ☝️ Basics
      1. 🔢 x, y
      2. 📖 Plot Type
    4. 🎁 Decoration
      1. 🏷️ Text
      2. 🎨 Visual
    5. 🚀 Add-On
    6. 💪 Summary
    7. 😺 GitHub
    8. 📃 References
    9. ✅ R Book for Psychologists: หนังสือภาษา R สำหรับนักจิตวิทยา

    🌲 Example Dataset: trees

    เราจะมาลองใช้ trees dataset ซึ่งมีข้อมูลต้น black cheery เป็นต้นอย่างกัน:

    # Load dataset
    data(trees)
    # View structure
    str(trees)

    ผลลัพธ์:

    'data.frame': 31 obs. of 3 variables:
    $ Girth : num 8.3 8.6 8.8 10.5 10.7 10.8 11 11 11.1 11.2 ...
    $ Height: num 70 65 63 72 81 83 66 75 80 75 ...
    $ Volume: num 10.3 10.3 10.2 16.4 18.8 19.7 15.6 18.2 22.6 19.9 ...

    💻 Syntax

    วิธีใช้ plot():

    plot(x, y, ...)
    func()
    • x = ข้อมูลแกน x
    • y = ข้อมูลแกน y
    • ... = argument อื่น ๆ สำหรับปรับแต่งกราฟ
    • func() = function อื่น ๆ สำหรับปรับแต่งกราฟ

    ☝️ Basics

    เราเริ่มใช้งาน plot() ได้ด้วย:

    1. x และ y: ใส่ข้อมูลในกราฟ
    2. type: เปลี่ยนประเภทกราฟ

    .

    🔢 x, y

    เราสร้างกราฟได้ง่าย ๆ ด้วยการเรียกใส่ข้อมูลแกน x และ y

    เช่น สร้างกราฟความสัมพันธ์ระหว่างขนาดลำต้น (Girth) และปริมาณ (Volume):

    # x, y
    plot(
    x = trees$Girth,
    y = trees$Volume
    )

    ผลลัพธ์:

    .

    📖 Plot Type

    ถ้าต้องการเปลี่ยนประเภทกราฟ ให้เราใช้ type:

    ArgumentPlot
    "p"Points
    "l"Line
    "b"Points + line
    "h"Vertical lines
    "n"Empty plot

    เช่น เปลี่ยน scatter plot เป็น line plot:

    # Plot type
    plot(
    x = trees$Girth,
    y = trees$Volume,
    type = "l"
    )

    ผลลัพธ์:


    🎁 Decoration

    เราตกแต่งกราฟได้ 2 แบบ:

    1. Text: ปรับแต่งข้อความ เช่น ชื่อกราฟ ชื่อแกน x, y
    2. Visual: ปรับแต่งหน้าตา เช่น สี รูปทรง ขนาด

    .

    🏷️ Text

    เราปรับแต่งข้อความได้ 3 ส่วน:

    1. xlab = ชื่อแกน x
    2. ylab = ชื่อแกน y
    3. main = ชื่อกราฟ

    เช่น:

    # Labels: xlab, ylab, main
    plot(
    x = trees$Girth,
    y = trees$Volume,
    xlab = "Girth (Inches)",
    ylab = "Volume (Cubic Feet)",
    main = "Tree Girth and Volume"
    )

    ผลลัพธ์:

    .

    🎨 Visual

    เราปรับแต่งหน้าตาได้ 3 ส่วน:

    1. col = สีข้อมูล
    2. pch = รูปทรง
    3. cex = ขนาดข้อมูล

    เช่น:

    # Colour, shape, and size
    plot(
    x = trees$Girth,
    y = trees$Volume,
    xlab = "Girth (Inches)",
    ylab = "Volume (Cubic Feet)",
    main = "Tree Girth and Volume",
    col = "darkgreen",
    pch = 5,
    cex = 1.5
    )

    ผลลัพธ์:


    🚀 Add-On

    เราสามารถเพิ่มข้อมูลลงในกราฟได้ด้วย function อื่น ๆ ในภาษา R

    เช่น abline() สำหรับเพิ่มเส้นตรง อย่างเส้น regression:

    # Regression line
    plot(
    x = trees$Girth,
    y = trees$Volume,
    xlab = "Girth (Inches)",
    ylab = "Volume (Cubic Feet)",
    main = "Tree Girth and Volume",
    col = "darkgreen",
    pch = 5,
    cex = 1.5
    )
    abline(
    lm(Volume ~ Girth, data = trees),
    col = "red",
    lwd = 2
    )

    ผลลัพธ์:


    💪 Summary

    ในบทความนี้ เราได้เรียนรู้วิธีใช้ plot() เพื่อสร้างกราฟอย่างง่ายในภาษา R:

    • x, y = ข้อมูลสำหรับแกน x และ y
    • type = เปลี่ยนรูปแบบการแสดงผลของกราฟ
    • xlab, ylab = ชื่อแกน x และ y
    • main = ชื่อกราฟ
    • col = สีของจุดหรือเส้นในกราฟ
    • pch = รูปทรงของจุดข้อมูล
    • cex = ขนาดของจุดข้อมูล
    • abline() = เพิ่มเส้นตรง เช่น เส้น regression

    😺 GitHub

    ดูตัวอย่าง code ทั้งหมดได้ที่ GitHub


    📃 References


    ✅ R Book for Psychologists: หนังสือภาษา R สำหรับนักจิตวิทยา

    📕 ขอฝากหนังสือเล่มแรกในชีวิตด้วยนะครับ 😆

    🙋 ใครที่กำลังเรียนจิตวิทยาหรือทำงานสายจิตวิทยา และเบื่อที่ต้องใช้ software ราคาแพงอย่าง SPSS และ Excel เพื่อทำข้อมูล

    💪 ผมขอแนะนำ R Book for Psychologists หนังสือสอนใช้ภาษา R เพื่อการวิเคราะห์ข้อมูลทางจิตวิทยา ที่เขียนมาเพื่อนักจิตวิทยาที่ไม่เคยมีประสบการณ์เขียน code มาก่อน

    ในหนังสือ เราจะปูพื้นฐานภาษา R และพาไปดูวิธีวิเคราะห์สถิติที่ใช้บ่อยกัน เช่น:

    • Correlation
    • t-tests
    • ANOVA
    • Reliability
    • Factor analysis

    🚀 เมื่ออ่านและทำตามตัวอย่างใน R Book for Psychologists ทุกคนจะไม่ต้องพึง SPSS และ Excel ในการทำงานอีกต่อไป และสามารถวิเคราะห์ข้อมูลด้วยตัวเองได้ด้วยความมั่นใจ

    แล้วทุกคนจะแปลกใจว่า ทำไมภาษา R ง่ายขนาดนี้ 🙂‍↕️

    👉 สนใจดูรายละเอียดหนังสือได้ที่ meb:

  • Basic R—รวบรวม 13 บทความสอนทำงานกับ data ในภาษา R: Intro to R, Importing Data, Data Manipulation, และ Data Visualisation

    Basic R—รวบรวม 13 บทความสอนทำงานกับ data ในภาษา R: Intro to R, Importing Data, Data Manipulation, และ Data Visualisation

    ในปีนี้ ผมเริ่มหันมาฝึกใช้ภาษา R อย่างจริงจังมากขึ้น หลังจากเรียนคอร์สออนไลน์จาก DataRockie และ DataCamp มา

    และเพื่อช่วยให้ผมเข้าใจภาษา R มากขึ้น ผมได้เขียนสรุปการใช้งานภาษา R เบื้องต้นไว้ ทั้งหมด 13 บทความ ซึ่งผมได้รวบรวมไว้เป็น 4 กลุ่ม ดังนี้:

    1. Introduction to R: แนะนำภาษา R และการทำงานกับ R เบื้องต้น
    2. Importing data: การนำเข้าข้อมูลในภาษา R
    3. Data manipulation: การแปลงข้อมูลดิบให้พร้อมสำหรับการวิเคราะห์
    4. Data visualisation: การแสดงข้อมูลในรูปแบบกราฟ

    .

    Group 1. Introduction to R (3 บทความ):

    1. R foundation: แนะนำภาษา R—ความแตกต่างระหว่าง R และ Python, data types, และ data structures ในภาษา R
    2. R control flow: สอนใช้ if, for, while เพื่อควบคุมการทำงานของภาษา R
    3. R functions: สอนสร้างและใช้งาน functions ในภาษา R

    .

    Group 2. Importing data (5 บทความ):

    1. Working with data frame: แนะนำ 10 วิธีในการทำงานกับ data frame ซึ่งเป็น data structure ที่พบบ่อยที่สุดในภาษา R
    2. Working with data frame using SQL: สอนการทำงานกับ data frame ด้วย SQL
    3. Working with flat files: แนะนำการใช้ 3 packages สำหรับ import ข้อมูลจาก flat files
    4. Working with Excel: แนะนำ 2 packages สำหรับทำงานกับ Excel
    5. Working with database: แนะนำวิธีทำงานกับ database ผ่าน DBI package

    .

    Group 3. Data manipulation (4 บทความ):

    1. dplyr package: แนะนำ 5 functions ยอดนิยมสำหรับ data manipulation
    2. dbplyr package: แนะนำการใช้ dplyr functions เพื่อทำงานกับ database
    3. dtplyr package: แนะนำการใช้ dplyr functions เพื่อทำงานกับข้อมูลขนาดใหญ่
    4. data.table package: แนะนำ package ยอดนิยมสำหรับทำงานกับข้อมูลขนาดใหญ่

    .

    Group 4. Data visualisation (1 บทความ):

    1. ggplot2 package: แนะนำวิธีใช้ package เพื่อสร้าง data viz แบบองค์กรระดับโลก

    👉 Tie-In: Machine Learning in R

    สำหรับคนที่สนใจ machine learning ในภาษา R สามารถดู 13 บทความการทำ machine learning ในรูปแบบต่าง ๆ ได้ที่นี่


    ✅ R Book for Psychologists: หนังสือภาษา R สำหรับนักจิตวิทยา

    📕 ขอฝากหนังสือเล่มแรกในชีวิตด้วยนะครับ 😆

    🙋 ใครที่กำลังเรียนจิตวิทยาหรือทำงานสายจิตวิทยา และเบื่อที่ต้องใช้ software ราคาแพงอย่าง SPSS และ Excel เพื่อทำข้อมูล

    💪 ผมขอแนะนำ R Book for Psychologists หนังสือสอนใช้ภาษา R เพื่อการวิเคราะห์ข้อมูลทางจิตวิทยา ที่เขียนมาเพื่อนักจิตวิทยาที่ไม่เคยมีประสบการณ์เขียน code มาก่อน

    ในหนังสือ เราจะปูพื้นฐานภาษา R และพาไปดูวิธีวิเคราะห์สถิติที่ใช้บ่อยกัน เช่น:

    • Correlation
    • t-tests
    • ANOVA
    • Reliability
    • Factor analysis

    🚀 เมื่ออ่านและทำตามตัวอย่างใน R Book for Psychologists ทุกคนจะไม่ต้องพึง SPSS และ Excel ในการทำงานอีกต่อไป และสามารถวิเคราะห์ข้อมูลด้วยตัวเองได้ด้วยความมั่นใจ

    แล้วทุกคนจะแปลกใจว่า ทำไมภาษา R ง่ายขนาดนี้ 🙂‍↕️

    👉 สนใจดูรายละเอียดหนังสือได้ที่ meb:

  • วิธีใช้ ggplot2 เพื่อสร้างกราฟอย่างมืออาชีพระดับโลก แบบ BBC และ Financial Times ในภาษา R — ตัวอย่างการสำรวจข้อมูลเพนกวินจาก palmerpenguins

    วิธีใช้ ggplot2 เพื่อสร้างกราฟอย่างมืออาชีพระดับโลก แบบ BBC และ Financial Times ในภาษา R — ตัวอย่างการสำรวจข้อมูลเพนกวินจาก palmerpenguins

    ggplot2 เป็น package สำหรับ data visualisation ในภาษา R และเป็นเครื่องมือสร้างกราฟที่มืออาชีพนิยม ตั้งแต่นักวิจัยในการตีพิมพ์ผลงาน ไปจนถึงสำนักข่าวระดับโลกอย่าง BBC และ Financial Times

    ggplot2 มีจุดเด่น 4 ข้อ:

    1. ใช้งานง่าย
    2. สร้างกราฟได้หลากหลาย
    3. ปรับแต่งกราฟได้ดังใจ
    4. ได้กราฟที่ดูดีและมีคุณภาพ

    .

    ในบทความนี้ เราจะมาดูวิธีใช้ ggplot2 เพื่อสร้างกราฟแบบมืออาชีพกัน:

    • ggplot2 syntax
    • Basic plotting
    • Plot customisations

    .

    ถ้าพร้อมแล้ว ไปเริ่มกันเลย


    1. 🔤 gg for “Grammar of Graphics”
    2. 🏁 Getting Started With ggplot2
    3. ✍️ Basic Syntax
    4. 📊 Basic Plotting: Data, Aesthetics, & Geom
      1. 🎨 Aesthetics
      2. ⏹️ Geom
    5. 🔧 More Customisations
      1. 🖼️ Theme
      2. 🔤 Text
      3. ✌️ Facet
    6. 🔥 Summary
    7. 📚 Learn More About ggplot2
      1. 😺 GitHub
      2. 📖 Read More About ggplot2
      3. 📰 Cheat Sheets
    8. 📃 References
    9. ✅ R Book for Psychologists: หนังสือภาษา R สำหรับนักจิตวิทยา

    🔤 gg for “Grammar of Graphics”

    gg ใน ggplot2 ย่อมาจาก “Grammar of Graphics”

    หนังสือ Grammar of Graphics ของ Leland Wilkinson บน Amazon

    Grammar of Graphics เป็นแนวคิดที่มองกราฟเป็นเหมือนภาษา คือ มีโครงสร้างและองค์ประกอบที่ตายตัว ซึ่งเมื่อเรานำมารวมกัน เราก็จะได้กราฟที่ต้องการขึ้นมา

    โดยกราฟใน ggplot2 ประกอบด้วย 7 ส่วน หรือ layers ได้แก่:

    No.LayerDescription
    1Dataชุดข้อมูลสำหรับสร้างกราฟ
    2Aestheticsจับคู่ข้อมูลกับกราฟ (เช่น แกน x และ y)
    3Geometric objectsประเภทกราฟ (เช่น กราฟเส้น กราฟแท่ง)
    4Facetsสร้างกราฟย่อย
    5Statistical transformationsวิเคราะห์ข้อมูล (เช่น หาค่าเฉลี่ย)
    6Coordinatesแกนในการสร้างกราฟ
    7Themeหน้าตาของกราฟ (เช่น สีพื้นหลัง)

    ในการทำงาน เรามักจะเรียกใช้งาน 3 layers แรกเป็นหลัก ได้แก่:

    1. Data
    2. Aesthetics
    3. Geometric objects

    🏁 Getting Started With ggplot2

    ในการเริ่มต้นใช้งาน ggplot2 เราต้องทำ 3 อย่างก่อน คือ:

    .

    ข้อที่ 1. ติดตั้ง ggplot2 บน environment ของเรา:

    install.packages("ggplot2")
    

    Note: ถ้าใครเคยติดตั้งแล้ว สามารถข้ามไปขั้นถัดไปได้เลย

    .

    ข้อที่ 2. เรียกใช้งาน ggplot2:

    library(ggplot2)
    

    Note: เราต้องเรียกใช้งาน ggplot2 ทุกครั้งที่เริ่ม session ใหม่

    .

    ข้อที่ 3. โหลด dataset ที่เราจะใช้สร้างกราฟ

    สำหรับบทความนี้ เราจะใช้ penguins dataset ที่มีข้อมูลของเพนกวิน 3 สายพันธุ์ (เช่น สปีชีส์ น้ำหนัก ความยาวปีก) กัน

    เราสามารถโหลด dataset ได้ดังนี้:

    install.packages("palmerpenguins")
    library(palmerpenguins)
    

    จากนั้น เราสามารถ preview ข้อมูลได้ด้วย head():

    head(penguins)
    

    ผลลัพธ์:

    Note: เราสามารถอ่านคู่มือ penguins ได้ด้วยคำสั่ง ?penguins

    .

    เมื่อทำครบทั้ง 3 ขั้นตอน เราก็พร้อมที่จะสร้างกราฟใน ggplot2 แล้ว


    ✍️ Basic Syntax

    ก่อนไปดูการสร้างกราฟ เรามาดู syntax ของ ggplot2 กันก่อน:

    ggplot(data, aes(x, y, other)) +
    geom_*() +
    ...
    • ggplot() คือ การเรียกใช้งาน ggplot2
    • data คือ ชุดข้อมูลในการสร้างกราฟ
    • aes() คือ ส่วนจับคู่ข้อมูลกับลักษณะของกราฟ
      • x, y คือ ข้อมูลที่แสดงบนแกน x และ y
      • other คือ ข้อมูลที่จะแสดงผ่านส่วนอื่น ๆ ของกราฟ เช่น สี ขนาด รูปทรง
    • geom_* คือ ประเภทกราฟ
    • … คือ function อื่น ๆ ในการตั้งค่ากราฟ (เช่น theme, facet)

    📊 Basic Plotting: Data, Aesthetics, & Geom

    ในการสร้างกราฟ เรามี 3 input เบื้องต้นที่เราต้องกำหนด ได้แก่:

    No.InputDescription
    1DataDataset ในการสร้างกราฟ
    2Aestheticsลักษณะของกราฟที่ใช้แสดงข้อมูล (เช่น แกน x และ y)
    3Geomประเภทกราฟ (เช่น กราฟเส้น กราฟแท่ง)

    Note: ทั้งสามอย่างสะท้อนถึง 3 layers แรกของ ggplot2

    ยกตัวอย่างเช่น

    สร้าง scatter plot ที่แสดงความสัมพันธ์ระหว่างน้ำหนักตัว (body_mass_g) และความยาวปีก (flipper_length_mm) ของเพนกวิน:

    ggplot(penguins, aes(x = body_mass_g,
                         y = flipper_length_mm)) +
      geom_point()
    

    ผลลัพธ์:

    .

    🎨 Aesthetics

    นอกจากแกน x และ y เราแสดงข้อมูลผ่านลักษณะอื่น ๆ ของกราฟได้ เช่น:

    No.ParametreDescription
    1colorสีขอบรูปทรง
    2fillสีในรูปทรง
    3shapeรูปทรง
    4sizeขนาด
    5alphaความโปร่งใส

    ยกตัวอย่างเช่น

    เพิ่มสปีชีส์เข้าไปใน scatter plot:

    ggplot(penguins, aes(x = body_mass_g,
                         y = flipper_length_mm,
                         color = species)) +
      geom_point()
    

    ผลลัพธ์:

    Note: เราใช้ color แทน fill เพราะ จุด default ของ scatter plot ไม่รองรับการเติมสี

    .

    ⏹️ Geom

    เราสามารถเปลี่ยนประเภทกราฟได้ โดยเปลี่ยน geom_*() เช่น:

    No.GeomGraph
    1geom_histogram()Histogram
    2geom_boxplot()Box plot
    3geom_line()Line plot
    4geom_col()Bar plot
    5geom_density()Density plot

    Note: ggplot2 มีรูปแบบกราฟกว่า 40+ แบบให้เลือก เราสามารถดูรูปแบบกราฟต่าง ๆ ได้ที่ Function reference และดูตัวอย่างกราฟได้ที่ The R Gallery

    .

    นอกจากนี้ เรายังสามารถปรับแต่งหน้าตาของกราฟได้ด้วย parametre ต่าง ๆ ใน geom_*() เช่น:

    No.ParametreDescription
    1colorสีขอบรูปทรง
    2fillสีในรูปทรง
    3shapeรูปทรง
    4sizeขนาด
    5alphaความโปร่งใส

    Note:

    • จะสังเกตว่า parametre เหล่านี้ (เรียกว่า attribute) เหมือนกับ parametres ของ aes()
    • ความแตกต่างอยู่ที่ parametre ใน geom_*() จะคงที่ ในขณะที่ parametre ใน aes() จะเปลี่ยนแปลงตามข้อมูล

    .

    ยกตัวอย่างเช่น

    เปลี่ยนจุดข้อมูลให้เป็นกล่องสี่เหลี่ยมใส:

    ggplot(penguins, aes(x = body_mass_g,
                         y = flipper_length_mm,
                         color = species)) +
      geom_point(shape = 22)
    

    ผลลัพธ์:

    จะเห็นได้ว่า จุดข้อมูลเปลี่ยนเป็นสี่เหลี่ยมเหมือนกันหมด และไม่เปลี่ยนตามประเภทเพนกวิน เพราะเรากำหนด argument ใน geom_*()

    .

    Note: เราสามารถดู argument ของ shape และ parametres อื่น ๆ ได้ที่ Aesthetic specifications


    🔧 More Customisations

    จนถึงตอนนี้ เรารู้วิธีสร้างและปรับแต่งกราฟเบื้องต้นกันแล้ว

    เรามาดู 3 วิธีในการปรับแต่งเพิ่มเติม เพื่อให้กราฟของเราดูเป็นมืออาชีพกัน:

    1. Theme
    2. Text
    3. Facet

    .

    🖼️ Theme

    Theme ใน ggplot2 หมายถึง หน้าตากราฟที่ไม่เกี่ยวข้องกับข้อมูล เช่น สีแกน x และ y และสีพื้นหลัง

    เราสามารถปรับ theme ได้โดยการเรียกใช้ theme_*() เช่น:

    ggplot(penguins, aes(x = body_mass_g,
                         y = flipper_length_mm,
                         color = species)) +
      geom_point() +
      
      # Apply classic theme
      theme_classic()
    

    ผลลัพธ์:

    จะเห็นว่า กราฟของเราดูสะอาดตามากขึ้น เมื่อไม่มี gridline

    .

    Note:

    ggplot2 มี built-in themes ให้เลือกใช้ 5 แบบหลัก ได้แก่:

    No.ThemeBackgroundGridline
    1theme_gray()สีเทาสีขาว
    2theme_classic()สีขาวNone
    3theme_bw()สีขาวสีเทา
    4theme_light()สีขาวสีเทา
    5theme_dark()สีเทาเข้มสีเทาอ่อน
    • theme_gray() เป็น default theme ของ ggplot2
    • ดู built-in themes อื่น ๆ ได้ที่ Complete themes
    • เราสามารถเลือกใช้ themes จาก packages อื่นใน R ได้ เช่น ggthemes และ bbcplot

    .

    🔤 Text

    ข้อความเป็นส่วนสำคัญของกราฟ ซึ่งสามารถช่วยให้คนที่ดูกราฟของเราเข้าใจกราฟได้ง่ายขึ้น

    ใน ggplot2 เราสามารถปรับแต่งข้อความได้ 3 วิธี:

    No.SyntaxDescription
    1theme()กำหนดขนาด และ typeface ของข้อความ
    2labs()เพิ่มชื่อกราฟ ชื่อแกน x, y และ legend
    3annotate()เพิ่มโน้ตในกราฟ

    ตัวอย่างเช่น:

    ggplot(penguins, aes(x = body_mass_g,
                           y = flipper_length_mm,
                           color = species)) +
      geom_point() +
      theme_classic() +
      
      # Adjust text size
      theme(plot.title = element_text(size = 16, face = "bold"),
            axis.title.x = element_text(size = 14),
            axis.title.y = element_text(size = 14),
            legend.title = element_text(size = 14),
            legend.text = element_text(size = 12),
            strip.text = element_text(size = 14, face = "bold")) +
      
      # Add a title, labels, and a legend
      labs(title = "Penguin Body Mass vs. Flipper Length",
           x = "Body Mass (g)",
           y = "Flipper Length (mm)",
           color = "Penguin Species") +
      
      # Add annotation
      annotate("text",
               x = 3000,
               y = 225,
               label = "Larger penguins tend to \\n have longer flippers",
               size = 5,
               color = "gray",
               hjust = 0)
    

    ผลลัพธ์:

    จะเห็นได้ว่า กราฟของเรามีชื่อกราฟ คำประกอบแกน x, y และ legend รวมทั้งโน้ตที่ช่วยในการอ่านกราฟ “Larger penguins tend to have longer flippers” เพิ่มขึ้นมา

    .

    ✌️ Facet

    ในบางครั้ง เราอาจต้องการสร้างกราฟย่อย ซึ่งเราสามารถทำได้ด้วย 2 คำสั่งใน ggplot2:

    No.FunctionDividing Factor
    1facet_wrap()1 categorical variable
    2facet_grid()2 categorical variables

    .

    ตัวอย่างเช่น

    ใช้ facet_wrap() แบ่งกราฟตามชนิดเพนกวิน:

    ggplot(penguins, aes(x = body_mass_g,
                         y = flipper_length_mm,
                         color = species)) +
      geom_point() +
      theme_bw() +
      
      # Use facet_wrap()
      facet_wrap(~species)
    

    ผลลัพธ์:

    .

    ใช้ facet_grid() แบ่งตามเพศและชนิดของเพนกวิน:

    ggplot(penguins, aes(x = body_mass_g,
                         y = flipper_length_mm,
                         color = species)) +
      geom_point() +
      theme_bw() +
      
      # Use facet_grid()
      facet_grid(sex~species)
    

    ผลลัพธ์:

    Note: ในกราฟ เรามี row ที่ 3 (NA) เพราะบาง record ไม่มีข้อมูลเพศของเพนกวิน


    🔥 Summary

    ในบทความนี้ เราได้เรียนรู้วิธีใช้ ggplot2 เพื่อสร้างกราฟอย่างมืออาชีพ

    • Syntax ของ ggplot2
    • การตั้งค่า aesthetics
      • x
      • y
      • Aesthetics อื่น ๆ
    • การตั้งค่า geom
      • geom_*()
      • paramatres ของ geom_*()
    • การปรับแต่งกราฟ
      • Theme
      • Text
      • Facet

    📚 Learn More About ggplot2

    .

    😺 GitHub

    สำหรับผู้ที่สนใจ สามารถดู code ทั้งหมดในบทความนี้ได้ที่ GitHub

    .

    📖 Read More About ggplot2

    .

    📰 Cheat Sheets


    📃 References

    Articles:

    Courses


    ✅ R Book for Psychologists: หนังสือภาษา R สำหรับนักจิตวิทยา

    📕 ขอฝากหนังสือเล่มแรกในชีวิตด้วยนะครับ 😆

    🙋 ใครที่กำลังเรียนจิตวิทยาหรือทำงานสายจิตวิทยา และเบื่อที่ต้องใช้ software ราคาแพงอย่าง SPSS และ Excel เพื่อทำข้อมูล

    💪 ผมขอแนะนำ R Book for Psychologists หนังสือสอนใช้ภาษา R เพื่อการวิเคราะห์ข้อมูลทางจิตวิทยา ที่เขียนมาเพื่อนักจิตวิทยาที่ไม่เคยมีประสบการณ์เขียน code มาก่อน

    ในหนังสือ เราจะปูพื้นฐานภาษา R และพาไปดูวิธีวิเคราะห์สถิติที่ใช้บ่อยกัน เช่น:

    • Correlation
    • t-tests
    • ANOVA
    • Reliability
    • Factor analysis

    🚀 เมื่ออ่านและทำตามตัวอย่างใน R Book for Psychologists ทุกคนจะไม่ต้องพึง SPSS และ Excel ในการทำงานอีกต่อไป และสามารถวิเคราะห์ข้อมูลด้วยตัวเองได้ด้วยความมั่นใจ

    แล้วทุกคนจะแปลกใจว่า ทำไมภาษา R ง่ายขนาดนี้ 🙂‍↕️

    👉 สนใจดูรายละเอียดหนังสือได้ที่ meb:

  • Seaborn: วิธีสร้างและตกแต่งกราฟใน Python พร้อมตัวอย่าง

    Seaborn: วิธีสร้างและตกแต่งกราฟใน Python พร้อมตัวอย่าง

    Updated: 03 Nov 2026

    .


    🤔 Seaborn คืออะไร?

    seaborn เป็น package ยอดนิยมสำหรับสร้างกราฟ (data visualisation) ใน Python และมีจุดเด่น 3 ข้อ

    1. ใช้งานง่าย ด้วยการเขียนโค้ดที่ตรงไปตรงมา
    2. กราฟมีหน้าตาสวยงาม เหมาะสำหรับตีพิมพ์
    3. ทำงานร่วมกับ pandas และ matplotlib ซึ่งเป็น package ยอดนิยมสำหรับทำงานกับข้อมูล ได้อย่างลงตัว

    💻 การเริ่มใช้งาน seaborn

    เราเริ่มใช้งาน seaborn ได้ใน 2 ขั้นตอน:

    1. ติดตั้ง package
    2. โหลด package

    ขั้นที่ 1. ติดตั้ง package:

    ติดตั้ง seaborn รวมทั้ง pandas และ matplotlib ที่จะใช้งานร่วมกัน (ทำแค่ครั้งแรกครั้งเดียว)

    ! pip install seaborn pandas matplotlib

    ขั้นที่ 2. โหลด package:

    โหลด seaborn และ package ที่เกี่ยวข้อง (ทำทุกครั้งที่เริ่ม session ใหม่)

    import seaborn as sns
    import pandas as pd
    import matplotlib.pyplot as plt

    🧑‍💻 วิธีใช้งาน seaborn

    seaborn มีวิธีสร้างกราฟดังนี้:

    # Create a plot
    sns.plot(data, x, y, customisation)
    # Show the plot
    plt.show()
    • sns.plot กำหนดประเภทกราฟ
    • data กำหนดชุดข้อมูล
    • x กำหนดข้อมูลแกน x
    • y กำหนดข้อมูลแกน y
    • customisation ตกแต่งกราฟ
    • plt.show() แสดงกราฟบนหน้าจอ

    📉 การสร้างกราฟ 5 ประเภท

    มาดูวิธีสร้างกราฟ 5 ประเภทใน seaborn กัน:

    1. Histogram
    2. Box plot
    3. Scatter plot
    4. Line plot
    5. Bar plot

    .

    🍔 ชุดข้อมูลตัวอย่าง

    สำหรับชุดข้อมูลตัวอย่าง เราจะใช้ tips ซึ่งมีข้อมูลเกี่ยวกับทิปในร้านอาหารกัน

    รายละเอียดชุดข้อมูล:

    คอลัมน์คำอธิบาย
    total_billราคารวมค่าอาหาร
    tipทิปที่ได้รับ
    sexเพศของลูกค้า
    smokerการสูบบุหรี่ของลูกค้า (สูบ หรือ ไม่สูบ)
    dayวันของสัปดาห์
    timeช่วงเวลาของวัน (lunch หรือ dinner)
    sizeจำนวนแขกในโต๊ะเดียวกัน

    วิธีโหลดข้อมูล:

    tips = sns.load_dataset("tips")
    Tips is a built-in dataset in seaborn.

    .

    📊 กราฟ 1. Histogram

    Histogram เป็นกราฟแสดงการกระจายตัว (distribution) ของข้อมูล

    ตัวอย่าง:

    ดูการกระจายตัวของทิปที่พนักงานได้รับ

    # Create a histogram
    sns.histplot(
    data = tips,
    x = "tip"
    )
    # Show the plot
    plt.show()

    ผลลัพธ์:

    Use sns.histplot() to create a histogram in seaborn.
    Histogram

    .

    📊 กราฟ 2. Box Plot

    Box plot แสดงการกระจายตัวของข้อมูล (เหมือนกับ histogram) และใช้เปรียบเทียบการกระจายตัวของตัวแปรหนึ่งระหว่างกลุ่มได้

    ตัวอย่าง:

    ดูการกระจายตัวของทิปในแต่ละมื้ออาหาร

    # Create a box plot
    sns.boxplot(
    data = tips,
    x = "time",
    y = "tip"
    )
    # Show the plot
    plt.show()

    ผลลัพธ์:

    Use sns.boxplot() to create a box plot in seaborn.
    Box plot

    .

    📊 กราฟ 3. Scatter Plot

    Scatter plot ใช้แสดงความสัมพันธ์ระหว่าง 2 ตัวแปร

    ตัวอย่าง:

    ความสัมพันธ์ระหว่างค่าอาหารและทิป

    # Create a scatter plot
    sns.scatterplot(
    data = tips,
    x = "total_bill",
    y = "tip"
    )
    # Show the plot
    plt.show()

    ผลลัพธ์:

    Use sns.scatterplot() to create a scatter plot in seaborn.
    Scatter plot

    .

    📊 กราฟ 4. Line Plot

    Line plot ใช้แสดงความสัมพันธ์ระหว่างตัวแปร 2 ตัว หรือแสดงการเปลี่ยนแปลงของข้อมูลตามช่วงเวลา

    ตัวอย่าง:

    สำรวจทิปตามจำนวนแขก

    # Create a line plot
    sns.lineplot(
    data = tips,
    x = "size",
    y = "tip"
    )
    # Show the plot
    plt.show()

    ผลลัพธ์:

    Use sns.lineplot() to create a line plot in seaborn.
    Line plot

    .

    📊 กราฟ 5. Bar Plot

    Bar plot ใช้เปรียบเทียบค่าของตัวแปรระหว่างกลุ่ม

    ตัวอย่าง:

    สำรวจทิปในแต่ละวันของสัปดาห์

    # Create a bar plot
    sns.barplot(
    data = tips,
    x = "day",
    y = "tip"
    )
    # Show the plot
    plt.show()

    ผลลัพธ์:

    Use sns.barplot() to create a bar plot in seaborn.
    Bar plot

    3️⃣ การเพิ่มตัวแปรที่ 3

    เราสามารถเพิ่มตัวแปรที่ 3 (นอกเหนือจากแกน x, y) ได้โดยใช้สี (hue) ดังนี้

    ตัวอย่าง:

    เพิ่มประเภทการสูบบุหรี่ (ตัวแปรที่ 3) เข้าไปในกราฟความสัมพันธ์ระหว่างทิป (y) และค่าอาหาร (x)

    # Create a scatter plot
    sns.scatterplot(
    data = tips,
    x = "total_bill",
    y = "tip",
    hue = "smoker" # third variable
    )
    # Show the plot
    plt.show()

    ผลลัพธ์:

    Use hue argument to add a third variable into a plot in seaborn.
    การเพิ่มตัวแปรที่ 3 ด้วย hue

    🎨 การตกแต่งกราฟ

    เรามาดู 3 วิธีในการตกแต่งกราฟกัน:

    1. การเปลี่ยนสีข้อมูล
    2. การเปลี่ยนสไตล์กราฟ
    3. การเพิ่มข้อความ

    .

    🖌️ วิธีที่ 1. การเปลี่ยนสีข้อมูล

    เปลี่ยนสีข้อมูล (hue) ได้ด้วย 2 วิธีย่อย:

    1. ใช้ palette: กำหนดสีเอง
    2. ใช้ sns.set_palette(): ใช้เซตสีของ seaborn

    👉 ตัวอย่างการใช้ palette:

    เปลี่ยนสีประเภทลูกค้าให้เป็นสีแดงและดำ

    # Specify the colours
    colours = {
    "Yes": "red",
    "No": "black"
    }
    # Create a scatter plot
    sns.scatterplot(
    data = tips,
    x = "total_bill",
    y = "tip",
    hue = "smoker",
    palette = colours # change colours
    )
    # Show the plot
    plt.show()

    ผลลัพธ์:

    Use palette argument to adjust the colours of the data points in seaborn plots.
    เปลี่ยนสีกราฟด้วย palette

    👉 ตัวอย่างการใช้ sns.set_palette():

    ใช้ชุดสีที่เหมาะกับผู้ชมที่ตาบอดสี

    # Set the palette
    sns.set_palette("colorblind")
    # Create a scatter plot
    sns.scatterplot(
    data = tips,
    x = "total_bill",
    y = "tip",
    hue = "smoker"
    )
    # Show the plot
    plt.show()

    ผลลัพธ์:

    Use sns.set_palette() to adjust the colours of the data points in seaborn plots.
    เปลี่ยนสีกราฟด้วย sns.set_palette()

    ตัวอย่างเซตสีที่เลือกใช้ได้:

    Argumentค่าสี
    "deep"ค่าตั้งต้นของ seaborn
    "muted""deep" เวอร์ชันสีอ่อน
    "pastel"สีพาสเทล
    "dark"สีเข้ม
    "colorblind"สีสำหรับคนตาบอดสี

    .

    🖌️ วิธีที่ 2. การเปลี่ยนสไตล์กราฟ

    เราเปลี่ยนสไตล์กราฟ (ธีม) ด้วย sns.set_style() ได้ดังนี้:

    Argumentสีพื้นหลังสีเส้นกราฟ
    "white"ขาว ⚪ขาว ⚪
    "dark"ดำ ⚫ดำ ⚫
    "whitegrid"ขาว ⚪ดำ ⚫
    "darkgrid"ดำ ⚫ขาว ⚪
    "ticks"ขาว ⚪ไม่มี ✖️

    ตัวอย่าง:

    เปลี่ยนสไตล์กราฟให้มีฉากหลังสีเทา

    # Set the style
    sns.set_style("darkgrid")
    # Create a scatter plot
    sns.scatterplot(
    data = tips,
    x = "total_bill",
    y = "tip",
    hue = "smoker"
    )
    # Show the plot
    plt.show()

    ผลลัพธ์:

    Use sns.set_style() to adjust the plot theme or style in seaborn.
    เปลี่ยนสไตล์กราฟด้วย sns.set_style()

    .

    🖌️ วิธีที่ 3. การเพิ่มข้อความ

    เราเพิ่มข้อความลงบนกราฟได้ด้วยคำสั่งจาก matplotlib.pyplot ดังนี้

    ตัวอย่าง:

    # Create a scatter plot
    sns.scatterplot(
    data = tips,
    x = "total_bill",
    y = "tip",
    hue = "smoker"
    )
    # Add a title
    plt.title("Total Bill vs Tip", fontsize = 16)
    # Add labels
    plt.xlabel("Total Bill ($)", fontsize = 12)
    plt.ylabel("Tip ($)", fontsize = 12)
    # Show the plot
    plt.show()

    ผลลัพธ์:

    Use plt.title(), plt.xlabel(), plt.ylabel() to add texts to seaborn plots.
    เพิ่มข้อความด้วยคำสั่งจาก matplotlib.pyplot

    💪 สรุปเนื้อหา

    ในบทความนี้ เราเรียนรู้วิธีการสร้างกราฟง่าย ๆ ใน seaborn กัน

    การสร้างกราฟ 5 ประเภท:

    กราฟคำสั่ง
    Histogramsns.histplot()
    Box plotsns.boxplot()
    Scatter plotsns.scatterplot()
    Line plotsns.lineplot()
    Bar plotsns.barplot()

    การเพิ่มตัวแปรที่ 3:

    วิธีคำสั่ง
    เพิ่มผ่านสีhue

    การตกแต่งกราฟ:

    ปรับแต่งคำสั่ง
    สีข้อมูลpalette หรือ sns.set_palette()
    สไตล์กราฟsns.set_style()
    ข้อความplt.title() และ plt.xlabel() และ plt.ylabel()
    Seaborn is a Python package for data visualisation.

    🫵 หลังจบบทความนี้

    ลองมาใช้ seaborn เพื่อสร้างกราฟกันนะครับ


    📄 อ้างอิง

  • Data Visualisation Basics: วิธีการเลือกใช้กราฟอย่างง่าย พร้อมประเภทกราฟ กรณีการใช้งาน และตัวอย่าง

    Data Visualisation Basics: วิธีการเลือกใช้กราฟอย่างง่าย พร้อมประเภทกราฟ กรณีการใช้งาน และตัวอย่าง

    ในบทความนี้ เราจะมาทำความรู้จักกับการใช้ data visualisation หรือเรียกสั้น ๆ ว่า data viz เบื้องต้นกัน:

    • Data viz คืออะไร?
    • วิธีเลือกและประเภท data viz

    ถ้าพร้อมแล้วไปเริ่มกันเลย


    1. Data Viz & Its Values
      1. Anscombe’s Quartet
    2. วิธีเลือกใช้ Data Viz
    3. Data Viz สำหรับ 1 ตัวแปร
      1. (1) Histogram
      2. (2) Box Plot
    4. Data Viz สำหรับ 2 ตัวแปร
      1. (1) Scatter Plot
      2. (2) Line Plot
      3. (3) Bar Plot
      4. (4) Dot Plot
    5. Data Viz สำหรับมากกว่า 2 ตัวแปร
      1. (1) Pair Plot
      2. (2) Heatmap
      3. (3) Parallel Coordinates Plot
    6. Caution: Pie Chart
    7. สรุป
    8. Bonus: เพิ่มตัวแปรใน Data Viz อย่างง่าย ๆ

    Data Viz & Its Values

    Data viz เป็นการนำเสนอข้อมูล (data หรือ information) ในรูปแบบของ …

    • กราฟ/ชาร์ต (graph/chart)
    • แผนภาพ (diagram)
    • รูปภาพ (picture)

    การแปลข้อมูลมาอยู่ในรูปของ data viz มีประโยชน์หลัก ๆ คือ

    1. ช่วยให้เห็น pattern ที่อยู่ในข้อมูลได้ง่ายขึ้น
    2. (ในกรณีที่ใช้ในการนำเสนอข้อมูล) ช่วยให้คนอื่นเข้าใจและจดจำข้อมูลของเราได้ดีขึ้น

    Anscombe’s Quartet

    ประโยชน์ของ data viz เห็นได้ชัดที่สุด ในตัวอย่างของ Anscombe’s Quartet

    ชุดข้อมูล Anscombe’s Quartet

    Anscombe’s Quartet เป็นข้อมูล 4 ชุด (แต่ละชุดประกอบด้วยคะแนน x และ y) ที่แตกต่างกัน แต่มีค่าสถิติที่เกือบจะเหมือนกัน เช่น

    • ค่าเฉลี่ย (mean) ของ x และ y
    • ค่าความแปรปวน (variance) ของ x และ y
    • correlation ระหว่าง x และ y

    แต่ถ้าเรานำ Anscombe’s Quartet มาทำเป็น data viz ก็จะเห็นว่า ข้อมูลทั้งสี่ชุดแตกต่างกันอย่างชัดเจน

    Data viz ของ Anscombe’s Quartet

    Anscombe’s Quartet เป็นตัวอย่างที่แสดงให้เห็นว่า data viz สามารถช่วยให้เราทำความเข้าใจข้อมูลได้อย่างง่ายและรวดเร็ว

    (ใครที่สนใจข้อมูลชุดนี้ สามารถเข้าดูเพิ่มได้ที่ Google Sheets)


    วิธีเลือกใช้ Data Viz

    เพื่อใช้งาน data viz ให้เกิดประสิทธิภาพสูงสุด เราควรเลือกใช้งาน data viz ให้ถูกประเภท

    โดยปัจจัยที่เราใช้เพื่อเลือก data viz มีอยู่ 2 อย่าง คือ

    1. จำนวนตัวแปร (variable) ที่เราใช้สร้าง data viz
    2. ประเภทของตัวแปร ซึ่งแยกได้เป็น 2 ประเภท ได้แก่
      1. Categorical variable หรือตัวแปรเชิงคุณภาพ เช่น เพศ จังหวัด สกุลเงิน
      2. Continuous variable หรือตัวแปรเชิงปริมาณ เช่น ความสูง น้ำหนัก จำนวนเงิน

    เมื่อเราใช้ 2 ปัจจัยนี้ เราจะจัดกลุ่ม data viz ได้ต่อไปดังนี้


    Data Viz สำหรับ 1 ตัวแปร

    .

    (1) Histogram

    ประเภทตัวแปร:

    Categorical variable

    กรณีการใช้งาน:

    สำรวจการกระจายตัว (distribution) ของตัวแปร

    ตัวอย่าง:

    การกระจายตัวของอายุประชาชน

    .

    (2) Box Plot

    ประเภทตัวแปร:

    Categorical variable

    กรณีการใช้งาน:

    • สำรวจ distribution ของตัวแปร
    • เปรียบเทียบ distribution กับตัวแปรอื่น ๆ

    ตัวอย่าง:

    ค่าใช้จ่ายรายเดือนของ 5 เมืองใหญ่ในอเมริกา


    Data Viz สำหรับ 2 ตัวแปร

    .

    (1) Scatter Plot

    ประเภทตัวแปร:

    1 continuous x 1 continuous variable

    กรณีการใช้งาน:

    สำรวจความสัมพันธ์ระหว่าง 2 ตัวแปร

    ตัวอย่าง:

    ความสัมพันธ์ระหว่างชั่วโมงเรียนและคะแนนสอบ

    .

    (2) Line Plot

    ประเภทตัวแปร:

    1 continuous x 1 continuous variable

    กรณีการใช้งาน:

    • สำรวจความสัมพันธ์ระหว่าง 2 ตัวแปร
    • ดู trend การเปลี่ยนแปลงตามเวลา

    ตัวอย่าง:

    ระดับอุณหภูมิในช่วงเวลา 1 ปี

    .

    (3) Bar Plot

    ประเภทตัวแปร:

    1 categorical x 1 continuous variable

    กรณีการใช้งาน:

    • นับจำนวนครั้งของ categorical variable
    • ดู percent ของ continuous variable เมื่อแบ่งตาม categorical variable

    ตัวอย่าง:

    จำนวนกาแฟที่ขายได้ในแต่ละวันของสัปดาห์

    .

    (4) Dot Plot

    ประเภทตัวแปร:

    1 categorical x 1 continuous variable

    กรณีการใช้งาน:

    ดูจำนวน continuous variable เมื่อแบ่งตาม categorical variable

    ตัวอย่าง:

    จำนวนพนักงานในแต่ละแผนก


    Data Viz สำหรับมากกว่า 2 ตัวแปร

    .

    (1) Pair Plot

    จำนวนตัวแปร:

    สูงสุด 10 ตัวแปร

    ประเภทตัวแปร:

    Categorical, continuous variables, หรือผสมก็ได้

    กรณีการใช้งาน:

    • ดู distribution ของตัวแปร
    • หาความสัมพันธ์ระหว่างตัวแปร

    ตัวอย่าง:

    ดูความสัมพันธ์ระหว่างลักษณะต่าง ๆ ของรถยนต์ เช่น แรงม้า น้ำหนัก การกินน้ำมัน

    .

    (2) Heatmap

    ประเภทตัวแปร:

    Continuous variables

    กรณีการใช้งาน:

    หาความสัมพันธ์ระหว่างตัวแปร

    ตัวอย่าง:

    อุณหภูมิของแต่ละเมืองในแต่ละเดือน

    .

    (3) Parallel Coordinates Plot

    ประเภทตัวแปร:

    Continuous variables เท่านั้น

    กรณีการใช้งาน:

    • หา pattern ในข้อมูล
    • จับกลุ่ม pattern ในข้อมูล

    ตัวอย่าง:

    คะแนนสอบนักเรียนในแต่ละวิชา


    Caution: Pie Chart

    Pie chart เป็น data viz ที่ควรหลีกเลี่ยง เพราะเป็นกราฟที่ตีความได้ยาก

    ตัวอย่างเช่น pie chart ที่แสดงสัดส่วนเวลาที่ programmer ใช้ในแต่ละวัน เราจะรู้ได้ยังไงว่า programmer ใช้เวลาไปกับอะไรมากกว่ากัน ระหว่าง Research และ Documentation

    จากตัวอย่าง ถ้าเราใช้ bar plot แทน จะเห็นได้ว่า เราทำความเข้าใจข้อมูลได้เร็วกว่า และตอบได้ทันทีว่า programmer ใช้เวลาไปกับ Research และ Documentation เท่า ๆ กัน:

    กรณีหลัก ๆ ที่เราจะใช้ pie chart คือ สำรวจสัดส่วนของข้อมูล เช่น ตัวอย่างด้านบน หรือจากยอดขายทั้งหมด สินค้าแต่ละตัวขายได้เป็นกี่เปอร์เซ็นต์

    นอกจากนี้ เราไม่ควรใช้ pie chart กับข้อมูลที่มี category มากกว่า 7 เพราะจะทำให้ pie chart อ่านยาก


    สรุป

    Data viz เป็นเครื่องมือช่วยในการทำความเข้าใจและสื่อสารข้อมูล

    โดยการเลือกใช้ data viz ขึ้นอยู่กับ 2 ปัจจัย คือ

    1. จำนวนตัวแปร
    2. ประเภทตัวแปร

    เราสามารถใช้ 2 ปัจจัยนี้ สรุปการเลือกใช้ data viz 10 ประเภทได้ดังนี้:

    No.Data Vizจำนวนประเภท
    1Histogram1Categorical
    2Box plot1Categorical
    3Scatter plot2All continuous
    4Line plot2All continuous
    5Bar plot2Categorical x Continuous
    6Dot plot2Categorical x Continuous
    7Pair plot>2Any
    8Heatmap>2Continuous
    9Parallel coordinates>2Continuous
    10Pie chart1Categorical

    Bonus: เพิ่มตัวแปรใน Data Viz อย่างง่าย ๆ

    เราสามารถใช้ 4 สิ่งเหล่านี้ เพื่อเพิ่มตัวแปรที่ 3 เข้าไปใน data viz สำหรับ 2 ตัวแปรได้:

    1. สี (colour)
    2. ขนาด (size)
    3. ความโปร่งใส (transparency)
    4. รูปทรง (shape)

    มาดูตัวอย่างกัน:

    ความสัมพันธ์ระหว่างความพึงพอใจและประสิทธิภาพในการทำงาน โดยแบ่งตามแผนก

    1. แบ่งแผนกด้วยสี

    2. แบ่งแผนกด้วยขนาด

    3. แบ่งแผนกด้วยความโปร่งใส

    4. แบ่งแผนกด้วยรูปทรง

    Note: จากตัวอย่างเราจะเห็นว่า การใช้สีเป็นวิธีนำเสนอตัวแปรที่สามได้ดีที่สุด ในขณะที่ขนาด ความโปร่งใส และรูปทรง