Tag: data visualization

  • 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: จากตัวอย่างเราจะเห็นว่า การใช้สีเป็นวิธีนำเสนอตัวแปรที่สามได้ดีที่สุด ในขณะที่ขนาด ความโปร่งใส และรูปทรง