แผนภูมิแท่งและฮิสโตแกรมใน R (พร้อมตัวอย่าง)
แผนภูมิแท่งเป็นวิธีที่ดีในการแสดงตัวแปรหมวดหมู่ในแกน x กราฟประเภทนี้แสดงถึงสองด้านในแกน y
- อันแรกนับจำนวนครั้งที่เกิดขึ้นระหว่างกลุ่ม
- ส่วนที่สองแสดงสถิติสรุป (ต่ำสุด สูงสุด ค่าเฉลี่ย และอื่นๆ) ของตัวแปรในแกน 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:
ขั้นตอน 3) เปลี่ยนการวางแนว
คุณเปลี่ยนการวางแนวของกราฟจากแนวตั้งเป็นแนวนอน
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity") + coord_flip()
คำอธิบายรหัส
- คุณสามารถควบคุมการวางแนวของกราฟได้ด้วย coord_flip()
Output:
ขั้นตอน 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:
ขั้นตอน 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:
ขั้นตอน 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:
สรุป
แผนภูมิแท่งมีประโยชน์เมื่อแกน 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") |