แผนภูมิแท่งและฮิสโตแกรมใน R (พร้อมตัวอย่าง)

แผนภูมิแท่งเป็นวิธีที่ดีในการแสดงตัวแปรหมวดหมู่ในแกน x กราฟประเภทนี้แสดงถึงสองด้านในแกน y

  1. อันแรกนับจำนวนครั้งที่เกิดขึ้นระหว่างกลุ่ม
  2. ส่วนที่สองแสดงสถิติสรุป (ต่ำสุด สูงสุด ค่าเฉลี่ย และอื่นๆ) ของตัวแปรในแกน y

คุณจะใช้ชุดข้อมูล mtcars ซึ่งมีตัวแปรดังต่อไปนี้:

  • cyl: จำนวนกระบอกสูบในรถ ตัวแปรตัวเลข
  • am: ประเภทเกียร์ 0 สำหรับเกียร์อัตโนมัติ และ 1 สำหรับเกียร์ธรรมดา เกียร์แปรผันตัวเลข
  • mpg: ไมล์ต่อแกลลอน ตัวแปรตัวเลข

วิธีสร้างแผนภูมิแท่ง

เพื่อสร้างกราฟใน Rคุณสามารถใช้ไลบรารี ggplot ซึ่งสร้างกราฟที่พร้อมสำหรับการเผยแพร่ ไวยากรณ์พื้นฐานของไลบรารีนี้คือ:

ggplot(data, mapping = aes()) +
geometric object 

arguments: 
data: dataset used to plot the graph 
mapping: Control the x and y-axis 
geometric object: The type of plot you want to show. The most common objects are:

- Point: `geom_point()`
- Bar: `geom_bar()`
- Line: `geom_line()`
- Histogram: `geom_histogram()` 

ในบทช่วยสอนนี้ คุณสนใจวัตถุเรขาคณิต geom_bar() ที่สร้างแผนภูมิแท่ง

แผนภูมิแท่ง: นับ

กราฟแรกของคุณแสดงความถี่ของทรงกระบอกด้วย geom_bar() โค้ดด้านล่างเป็นไวยากรณ์พื้นฐานที่สุด

library(ggplot2)
# Most basic bar chart
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar()

คำอธิบายรหัส

  • คุณส่งชุดข้อมูล mtcars ไปที่ ggplot
  • ภายในอาร์กิวเมนต์ aes() คุณเพิ่มแกน x เป็นตัวแปรตัวประกอบ (cyl)
  • เครื่องหมาย + หมายถึงคุณต้องการให้ R อ่านโค้ดต่อไป ซึ่งจะทำให้โค้ดอ่านง่ายขึ้นโดยการทำลายโค้ด
  • ใช้ geom_bar() สำหรับวัตถุทางเรขาคณิต

Output:

แผนภูมิแท่ง: นับ

หมายเหตุ: ตรวจสอบให้แน่ใจว่าคุณแปลงตัวแปรเป็นปัจจัย มิฉะนั้น R จะถือว่าตัวแปรเป็นตัวเลข ดูตัวอย่างด้านล่าง

แผนภูมิแท่ง: นับ

ปรับแต่งกราฟ

สามารถส่งผ่านข้อโต้แย้งสี่ข้อเพื่อปรับแต่งกราฟ:

- `stat`: Control the type of formatting. By default, `bin` to plot a count in the y-axis. For continuous value, pass `stat = "identity"`
- `alpha`: Control density of the color
- `fill`: Change the color of the bar
- `size`: Control the size the bar	

เปลี่ยนสีของแถบ

คุณสามารถเปลี่ยนสีของแถบได้ โปรดทราบว่าสีของแท่งจะคล้ายกันทั้งหมด

# Change the color of the bars
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar(fill = "coral") +
    theme_classic()

คำอธิบายรหัส

  • สีของแท่งกราฟถูกควบคุมโดยการแมป aes() ภายในวัตถุเรขาคณิต (นั่นคือ ไม่ได้อยู่ใน ggplot()) คุณสามารถเปลี่ยนสีได้ด้วยอาร์กิวเมนต์การเติม ที่นี่คุณเลือกสีปะการัง

Output:

เปลี่ยนสีของแถบ

คุณสามารถใช้รหัสนี้:

grDevices::colors()

เพื่อดูสีทั้งหมดที่มีใน R มีประมาณ 650 สี

เปลี่ยนความเข้ม

คุณสามารถเพิ่มหรือลดความเข้มของสีของแท่งได้

# Change intensity
ggplot(mtcars,
        aes(factor(cyl))) +
    geom_bar(fill = "coral",
        alpha = 0.5) +
    theme_classic()

คำอธิบายรหัส

  • หากต้องการเพิ่ม/ลดความเข้มของแถบ คุณสามารถเปลี่ยนค่าของอัลฟ่าได้ อัลฟ่าขนาดใหญ่จะเพิ่มความเข้ม และอัลฟ่าต่ำจะลดความเข้ม อัลฟามีตั้งแต่ 0 ถึง 1 ถ้าเป็น 1 แสดงว่าสีจะเหมือนกับจานสี ถ้า 0 สีจะเป็นสีขาว คุณเลือกอัลฟ่า = 0.1

Output:

เปลี่ยนความเข้ม

ระบายสีตามกลุ่ม

คุณสามารถเปลี่ยนสีของแถบได้ ซึ่งหมายถึงสีที่แตกต่างกันหนึ่งสีสำหรับแต่ละกลุ่ม ตัวอย่างเช่น ตัวแปรทรงกระบอกมีสามระดับ จากนั้นคุณสามารถลงจุดแผนภูมิแท่งด้วยสีสามสีได้

# Color by group
ggplot(mtcars, aes(factor(cyl),
        fill = factor(cyl))) +
    geom_bar()

คำอธิบายรหัส

  • อาร์กิวเมนต์กรอกภายใน aes() อนุญาตให้เปลี่ยนสีของแถบ คุณเปลี่ยนสีโดยการตั้งค่าการเติม = ตัวแปรแกน x ในตัวอย่างของคุณ ตัวแปรแกน x คือทรงกระบอก เติม = ปัจจัย (กระบอกสูบ)

Output:

สีตามกลุ่ม

เพิ่มกลุ่มในแถบ

คุณสามารถแยกแกน y เพิ่มเติมตามระดับปัจจัยอื่นได้ เช่น คุณสามารถนับจำนวนเกียร์อัตโนมัติและเกียร์ธรรมดาตามประเภทของกระบอกสูบได้

คุณจะดำเนินการดังต่อไปนี้:

  • ขั้นตอนที่ 1: สร้าง data frame ด้วยชุดข้อมูล mtcars
  • ขั้นตอนที่ 2: กำหนดป้ายกำกับตัวแปร am ด้วย auto สำหรับเกียร์อัตโนมัติและ man สำหรับเกียร์ธรรมดา แปลง am และ cyl เป็นตัวประกอบเพื่อที่คุณจะไม่จำเป็นต้องใช้ factor() ในฟังก์ชัน ggplot()
  • ขั้นตอนที่ 3: วาดแผนภูมิแท่งเพื่อนับจำนวนการส่งกำลังตามกระบอกสูบ
library(dplyr)
# Step 1
data <- mtcars % > % 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

คุณมีชุดข้อมูลพร้อมแล้ว คุณสามารถพล็อตกราฟได้

# ขั้นตอนที่ 3

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar() +
    theme_classic()

คำอธิบายรหัส

  • ggpplot() ประกอบด้วยข้อมูลชุดข้อมูลและ aes()
  • ใน aes() คุณรวมตัวแปรแกน x และตัวแปรใดที่จำเป็นในการเติมแท่ง (เช่น am)
  • geom_bar(): สร้างแผนภูมิแท่ง

Output:

เพิ่มกลุ่มในบาร์

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

แผนภูมิแท่งเป็นเปอร์เซ็นต์

คุณสามารถเห็นภาพแถบเป็นเปอร์เซ็นต์แทนการนับดิบได้

# แผนภูมิแท่งเป็นเปอร์เซ็นต์

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = "fill") +
    theme_classic()

คำอธิบายรหัส

  • ใช้ตำแหน่ง = “เติม” ในอาร์กิวเมนต์ geom_bar() เพื่อสร้างกราฟิกที่มีเปอร์เซ็นต์ในแกน y

Output:

แผนภูมิแท่งเป็นเปอร์เซ็นต์

แถบด้านข้าง

เป็นเรื่องง่ายที่จะลงจุดแผนภูมิแท่งโดยมีตัวแปรกลุ่มอยู่เคียงข้างกัน

# Bar chart side by side
ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = position_dodge()) +
    theme_classic()

คำอธิบายรหัส

  • position=position_dodge(): บอกวิธีจัดเรียงแท่งอย่างชัดเจน

Output:

แถบด้านข้าง

Histogram

ในส่วนที่สองของบทช่วยสอนแผนภูมิแท่ง คุณสามารถแสดงกลุ่มของตัวแปรด้วยค่าในแกน y

วัตถุประสงค์ของคุณคือสร้างกราฟด้วยไมล์เฉลี่ยต่อแกลลอนสำหรับกระบอกสูบแต่ละประเภท ในการวาดกราฟข้อมูล คุณจะต้องทำตามขั้นตอนเหล่านี้:

  • ขั้นตอนที่ 1: สร้างตัวแปรใหม่ด้วยไมล์เฉลี่ยต่อแกลลอนต่อกระบอกสูบ
  • ขั้นตอนที่ 2: สร้างฮิสโตแกรมพื้นฐาน
  • ขั้นตอนที่ 3: เปลี่ยนการวางแนว
  • ขั้นตอนที่ 4: เปลี่ยนสี
  • ขั้นตอนที่ 5: เปลี่ยนขนาด
  • ขั้นตอนที่ 6: เพิ่มป้ายกำกับให้กับกราฟ

ขั้นตอน 1) สร้างตัวแปรใหม่

คุณสร้างกรอบข้อมูลชื่อ data_histogram ซึ่งจะคืนค่าไมล์เฉลี่ยต่อแกลลอนตามจำนวนกระบอกสูบในรถยนต์ คุณเรียกตัวแปรใหม่นี้ว่า "mean_mpg" และปัดเศษค่าเฉลี่ยด้วยทศนิยม 2 ตำแหน่ง

# ขั้นตอนที่ 1

data_histogram <- mtcars % > %
mutate(cyl = factor(cyl)) % > %
group_by(cyl) % > %
summarize(mean_mpg = round(mean(mpg), 2))

ขั้นตอน 2) สร้างฮิสโตแกรมพื้นฐาน

คุณสามารถพล็อตฮิสโตแกรมได้ ยังไม่พร้อมที่จะสื่อสารเพื่อส่งมอบให้กับลูกค้า แต่ทำให้เราเข้าใจถึงแนวโน้มได้

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity")

คำอธิบายรหัส

  • ขณะนี้ aes() มีตัวแปรสองตัว ตัวแปรทรงกระบอกอ้างอิงถึงแกน x และ Mean_mpg คือแกน y
  • คุณต้องส่งผ่านอาร์กิวเมนต์ stat=”identity” เพื่ออ้างอิงตัวแปรในแกน y เป็นค่าตัวเลข geom_bar ใช้ stat=”bin” เป็นค่าเริ่มต้น

Output:

Histogram

ขั้นตอน 3) เปลี่ยนการวางแนว

คุณเปลี่ยนการวางแนวของกราฟจากแนวตั้งเป็นแนวนอน

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity") +
    coord_flip()

คำอธิบายรหัส

  • คุณสามารถควบคุมการวางแนวของกราฟได้ด้วย coord_flip()

Output:

Histogram

ขั้นตอน 4) เปลี่ยนสี

คุณสามารถแยกความแตกต่างของสีของแท่งตามระดับแฟกเตอร์ของตัวแปรแกน x

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    coord_flip() +
    theme_classic()

คำอธิบายรหัส

  • คุณสามารถพล็อตกราฟตามกลุ่มด้วยการแมป fill= cyl R ดูแลสีโดยอัตโนมัติตามระดับของตัวแปรกระบอกสูบ

Output:

Histogram

ขั้นตอน 5) เปลี่ยนขนาด

หากต้องการให้กราฟดูสวยขึ้น คุณจะต้องลดความกว้างของแท่ง

graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity",
        width = 0.5) +
    coord_flip() +
    theme_classic()

คำอธิบายรหัส

  • อาร์กิวเมนต์ความกว้างภายใน geom_bar() ควบคุมขนาดของแท่ง ค่าที่มากขึ้นจะเพิ่มความกว้าง
  • หมายเหตุ คุณเก็บกราฟไว้ในกราฟตัวแปร คุณทำเช่นนั้นเนื่องจากขั้นตอนต่อไปจะไม่เปลี่ยนโค้ดของกราฟตัวแปร ช่วยเพิ่มความสามารถในการอ่านโค้ด

Output:

Histogram

ขั้นตอน 6) เพิ่มป้ายกำกับให้กับกราฟ

ขั้นตอนสุดท้ายประกอบด้วยการเพิ่มค่าของตัวแปรmean_mpgในป้ายกำกับ

graph +
    geom_text(aes(label = mean_mpg),
        hjust = 1.5,
        color = "white",
        size = 3) +
    theme_classic()

คำอธิบายรหัส

  • ฟังก์ชัน geom_text() มีประโยชน์ในการควบคุมความสวยงามของข้อความ
    • label=: เพิ่มป้ายกำกับภายในแถบ
    • Mean_mpg: ใช้ตัวแปร Mean_mpg สำหรับป้ายกำกับ
  • hjust ควบคุมตำแหน่งของฉลาก ค่าที่ปิดเป็น 1 จะแสดงป้ายกำกับที่ด้านบนของแถบ และค่าที่สูงกว่าจะทำให้ป้ายกำกับอยู่ด้านล่าง หากการวางแนวของกราฟเป็นแนวตั้ง ให้เปลี่ยน hjust เป็น vjust
  • color=”white”: เปลี่ยนสีของข้อความ ที่นี่คุณใช้สีขาว
  • size=3: กำหนดขนาดของข้อความ

Output:

Histogram

สรุป

แผนภูมิแท่งมีประโยชน์เมื่อแกน x เป็นตัวแปรเชิงหมวดหมู่ แกน y อาจเป็นจำนวนนับหรือสถิติสรุป ตารางด้านล่างสรุปวิธีควบคุมแผนภูมิแท่งด้วย ggplot2:

วัตถุประสงค์ รหัส
นับ
ggplot(df, eas(x= factor(x1)) + geom_bar()
นับด้วยสีเติมที่แตกต่างกัน
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar()
นับเป็นกลุ่มซ้อนกัน
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
นับเป็นกลุ่มเคียงข้างกัน
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar()
นับเป็นกลุ่ม ซ้อนกันเป็น %
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
ความคุ้มค่า
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity")