You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Data-Science-For-Beginners/translations/th/3-Data-Visualization/R/09-visualization-quantities
leestott b3d803186c
🌐 Update translations via Co-op Translator
4 weeks ago
..
README.md 🌐 Update translations via Co-op Translator 4 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 4 weeks ago

README.md

การแสดงผลข้อมูลเชิงปริมาณ

 Sketchnote โดย (@sketchthedocs)
การแสดงผลข้อมูลเชิงปริมาณ - Sketchnote โดย @nitya

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

แบบทดสอบก่อนเรียน

สังเกตความกว้างของปีกด้วย ggplot2

ไลบรารีที่ยอดเยี่ยมสำหรับการสร้างกราฟและแผนภูมิทั้งแบบง่ายและซับซ้อนคือ ggplot2 โดยทั่วไปแล้ว กระบวนการสร้างกราฟด้วยไลบรารีเหล่านี้ประกอบด้วยการระบุส่วนของ dataframe ที่คุณต้องการวิเคราะห์ การปรับเปลี่ยนข้อมูลตามความจำเป็น การกำหนดค่าของแกน x และ y การเลือกประเภทของกราฟที่จะแสดง และการแสดงผลกราฟนั้น

ggplot2 เป็นระบบสำหรับการสร้างกราฟิกแบบประกาศ โดยอิงตาม Grammar of Graphics Grammar of Graphics เป็นโครงร่างทั่วไปสำหรับการแสดงผลข้อมูลที่แบ่งกราฟออกเป็นองค์ประกอบเชิงความหมาย เช่น สเกลและเลเยอร์ กล่าวอีกนัยหนึ่ง ความง่ายในการสร้างกราฟสำหรับข้อมูลแบบ univariate หรือ multivariate ด้วยโค้ดเพียงเล็กน้อยทำให้ ggplot2 เป็นแพ็กเกจที่ได้รับความนิยมมากที่สุดสำหรับการแสดงผลใน R ผู้ใช้บอก ggplot2 ว่าจะจับคู่ตัวแปรกับลักษณะกราฟิกอย่างไร และ ggplot2 จะจัดการส่วนที่เหลือให้

กราฟ = ข้อมูล + ลักษณะกราฟิก + รูปทรง

  • ข้อมูล หมายถึงชุดข้อมูล
  • ลักษณะกราฟิก หมายถึงตัวแปรที่ต้องการศึกษา (ตัวแปร x และ y)
  • รูปทรง หมายถึงประเภทของกราฟ (กราฟเส้น กราฟแท่ง ฯลฯ)

เลือกประเภทของกราฟที่เหมาะสมกับข้อมูลของคุณและเรื่องราวที่คุณต้องการเล่าผ่านกราฟ

  • วิเคราะห์แนวโน้ม: กราฟเส้น กราฟแท่ง
  • เปรียบเทียบค่า: กราฟแท่ง กราฟคอลัมน์ กราฟวงกลม กราฟกระจาย
  • แสดงความสัมพันธ์ระหว่างส่วนต่างๆ: กราฟวงกลม
  • แสดงการกระจายของข้อมูล: กราฟกระจาย กราฟแท่ง
  • แสดงความสัมพันธ์ระหว่างค่า: กราฟเส้น กราฟกระจาย กราฟฟอง

คุณสามารถดู cheatsheet ที่อธิบาย ggplot2 ได้เพิ่มเติม

สร้างกราฟเส้นเกี่ยวกับค่าความกว้างของปีกนก

เปิด R console และนำเข้าชุดข้อมูล

หมายเหตุ: ชุดข้อมูลถูกเก็บไว้ใน root ของ repo นี้ในโฟลเดอร์ /data

นำเข้าชุดข้อมูลและดูหัวข้อ (5 แถวแรก) ของข้อมูล

birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
head(birds)

หัวข้อของข้อมูลมีทั้งข้อความและตัวเลข:

Name ScientificName Category Order Family Genus ConservationStatus MinLength MaxLength MinBodyMass MaxBodyMass MinWingspan MaxWingspan
0 Black-bellied whistling-duck Dendrocygna autumnalis Ducks/Geese/Waterfowl Anseriformes Anatidae Dendrocygna LC 47 56 652 1020 76 94
1 Fulvous whistling-duck Dendrocygna bicolor Ducks/Geese/Waterfowl Anseriformes Anatidae Dendrocygna LC 45 53 712 1050 85 93
2 Snow goose Anser caerulescens Ducks/Geese/Waterfowl Anseriformes Anatidae Anser LC 64 79 2050 4050 135 165
3 Ross's goose Anser rossii Ducks/Geese/Waterfowl Anseriformes Anatidae Anser LC 57.3 64 1066 1567 113 116
4 Greater white-fronted goose Anser albifrons Ducks/Geese/Waterfowl Anseriformes Anatidae Anser LC 64 81 1930 3310 130 165

เริ่มต้นด้วยการสร้างกราฟเส้นพื้นฐานสำหรับข้อมูลตัวเลข สมมติว่าคุณต้องการดูค่าความกว้างปีกสูงสุดของนกเหล่านี้

install.packages("ggplot2")
library("ggplot2")
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
  geom_line() 

ในที่นี้ คุณติดตั้งแพ็กเกจ ggplot2 และนำเข้ามาใน workspace โดยใช้คำสั่ง library("ggplot2") เพื่อสร้างกราฟใน ggplot ใช้ฟังก์ชัน ggplot() และระบุชุดข้อมูล ตัวแปร x และ y เป็น attribute ในกรณีนี้ เราใช้ฟังก์ชัน geom_line() เนื่องจากเราต้องการสร้างกราฟเส้น

MaxWingspan-lineplot

คุณสังเกตเห็นอะไรทันที? ดูเหมือนว่าจะมีค่าผิดปกติอย่างน้อยหนึ่งค่า - นั่นคือความกว้างปีกที่ใหญ่มาก! ความกว้างปีกกว่า 2000 เซนติเมตรเท่ากับมากกว่า 20 เมตร - มี Pterodactyls อยู่ในมินนิโซตาหรือเปล่า? มาสำรวจเพิ่มเติมกันเถอะ

แม้ว่าคุณจะสามารถจัดเรียงข้อมูลใน Excel เพื่อค้นหาค่าผิดปกติได้อย่างรวดเร็ว แต่เราจะดำเนินการต่อจากภายในกราฟ

เพิ่มป้ายกำกับในแกน x เพื่อแสดงว่านกชนิดใดที่กำลังถูกวิเคราะห์:

ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
  geom_line() +
  theme(axis.text.x = element_text(angle = 45, hjust=1))+
  xlab("Birds") +
  ylab("Wingspan (CM)") +
  ggtitle("Max Wingspan in Centimeters")

เราระบุมุมใน theme และระบุป้ายกำกับแกน x และ y ใน xlab() และ ylab() ตามลำดับ ส่วน ggtitle() ให้ชื่อกราฟ/แผนภูมิ

MaxWingspan-lineplot-improved

แม้จะหมุนป้ายกำกับเป็น 45 องศา แต่ก็ยังอ่านยากเกินไป ลองใช้กลยุทธ์อื่น: แสดงป้ายกำกับเฉพาะค่าผิดปกติและตั้งป้ายกำกับภายในกราฟ คุณสามารถใช้กราฟกระจายเพื่อเพิ่มพื้นที่สำหรับการติดป้ายกำกับ:

ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
  geom_point() +
  geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) + 
  theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank())
  ylab("Wingspan (CM)") +
  ggtitle("Max Wingspan in Centimeters") + 

เกิดอะไรขึ้นที่นี่? คุณใช้ฟังก์ชัน geom_point() เพื่อสร้างจุดกระจาย ด้วยวิธีนี้ คุณเพิ่มป้ายกำกับสำหรับนกที่มี MaxWingspan > 500 และซ่อนป้ายกำกับบนแกน x เพื่อทำให้กราฟดูสะอาดขึ้น

คุณค้นพบอะไร?

MaxWingspan-scatterplot

กรองข้อมูลของคุณ

ทั้ง Bald Eagle และ Prairie Falcon แม้จะเป็นนกที่ใหญ่มาก แต่ดูเหมือนว่าจะมีการระบุค่าผิดพลาด โดยมีการเพิ่มเลข 0 เข้าไปในค่าความกว้างปีกสูงสุด เป็นไปได้ยากที่คุณจะพบ Bald Eagle ที่มีความกว้างปีก 25 เมตร แต่ถ้าเจอ โปรดแจ้งให้เราทราบ! มาสร้าง dataframe ใหม่โดยไม่มีค่าผิดปกติสองค่านี้:

birds_filtered <- subset(birds, MaxWingspan < 500)

ggplot(data=birds_filtered, aes(x=Name, y=MaxWingspan,group=1)) +
  geom_point() +
  ylab("Wingspan (CM)") +
  xlab("Birds") +
  ggtitle("Max Wingspan in Centimeters") + 
  geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) +
  theme(axis.text.x=element_blank(), axis.ticks.x=element_blank())

เราสร้าง dataframe ใหม่ชื่อ birds_filtered และสร้างกราฟกระจายอีกครั้ง โดยการกรองค่าผิดปกติออก ข้อมูลของคุณจะดูสอดคล้องและเข้าใจง่ายขึ้น

MaxWingspan-scatterplot-improved

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

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

มีหมวดหมู่นกกี่ประเภท และมีจำนวนเท่าไหร่? มีนกที่สูญพันธุ์ ใกล้สูญพันธุ์ หายาก หรือพบได้ทั่วไปกี่ตัว? มีนกใน genus และ order ต่างๆ ตามคำศัพท์ของ Linnaeus กี่ตัว?

สำรวจกราฟแท่ง

กราฟแท่งมีประโยชน์เมื่อคุณต้องการแสดงการจัดกลุ่มของข้อมูล มาสำรวจหมวดหมู่นกที่มีอยู่ในชุดข้อมูลนี้เพื่อดูว่าหมวดหมู่ใดมีจำนวนมากที่สุด

มาสร้างกราฟแท่งจากข้อมูลที่กรองแล้ว

install.packages("dplyr")
install.packages("tidyverse")

library(lubridate)
library(scales)
library(dplyr)
library(ggplot2)
library(tidyverse)

birds_filtered %>% group_by(Category) %>%
  summarise(n=n(),
  MinLength = mean(MinLength),
  MaxLength = mean(MaxLength),
  MinBodyMass = mean(MinBodyMass),
  MaxBodyMass = mean(MaxBodyMass),
  MinWingspan=mean(MinWingspan),
  MaxWingspan=mean(MaxWingspan)) %>% 
  gather("key", "value", - c(Category, n)) %>%
  ggplot(aes(x = Category, y = value, group = key, fill = key)) +
  geom_bar(stat = "identity") +
  scale_fill_manual(values = c("#D62728", "#FF7F0E", "#8C564B","#2CA02C", "#1F77B4", "#9467BD")) +                   
  xlab("Category")+ggtitle("Birds of Minnesota")

ในตัวอย่างนี้ เราติดตั้งแพ็กเกจ dplyr และ lubridate เพื่อช่วยจัดการและจัดกลุ่มข้อมูลเพื่อสร้างกราฟแท่งแบบซ้อนกัน ก่อนอื่น คุณจัดกลุ่มข้อมูลตาม Category ของนกและสรุปคอลัมน์ MinLength, MaxLength, MinBodyMass, MaxBodyMass, MinWingspan, MaxWingspan จากนั้นสร้างกราฟแท่งโดยใช้แพ็กเกจ ggplot2 และระบุสีสำหรับหมวดหมู่ต่างๆ และป้ายกำกับ

Stacked bar chart

อย่างไรก็ตาม กราฟแท่งนี้อ่านยากเนื่องจากมีข้อมูลที่ไม่ได้จัดกลุ่มมากเกินไป คุณต้องเลือกเฉพาะข้อมูลที่คุณต้องการแสดงผล ดังนั้นมาดูความยาวของนกตามหมวดหมู่กัน

กรองข้อมูลของคุณเพื่อรวมเฉพาะหมวดหมู่นก

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

birds_count<-dplyr::count(birds_filtered, Category, sort = TRUE)
birds_count$Category <- factor(birds_count$Category, levels = birds_count$Category)
ggplot(birds_count,aes(Category,n))+geom_bar(stat="identity")+coord_flip()

คุณนับค่าที่ไม่ซ้ำกันในคอลัมน์ Category และจัดเรียงข้อมูลลงใน dataframe ใหม่ชื่อ birds_count ข้อมูลที่จัดเรียงนี้จะถูกจัดระดับในลำดับเดียวกันเพื่อให้แสดงผลในลำดับที่จัดเรียงไว้ จากนั้นใช้ ggplot2 เพื่อสร้างกราฟแท่ง โดย coord_flip() จะสร้างกราฟแท่งแนวนอน

category-length

กราฟแท่งนี้แสดงภาพที่ดีเกี่ยวกับจำนวนของนกในแต่ละหมวดหมู่ เพียงแค่ดู คุณจะเห็นว่าจำนวนมากที่สุดของนกในภูมิภาคนี้อยู่ในหมวด Ducks/Geese/Waterfowl มินนิโซตาเป็น 'ดินแดนแห่งทะเลสาบ 10,000 แห่ง' ดังนั้นจึงไม่น่าแปลกใจ!

ลองนับข้อมูลอื่นๆ ในชุดข้อมูลนี้ มีอะไรที่ทำให้คุณประหลาดใจหรือไม่?

การเปรียบเทียบข้อมูล

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

birds_grouped <- birds_filtered %>%
  group_by(Category) %>%
  summarise(
  MaxLength = max(MaxLength, na.rm = T),
  MinLength = max(MinLength, na.rm = T)
           ) %>%
  arrange(Category)
  
ggplot(birds_grouped,aes(Category,MaxLength))+geom_bar(stat="identity")+coord_flip()

เราจัดกลุ่มข้อมูล birds_filtered ตาม Category และสร้างกราฟแท่ง

comparing data

ไม่มีอะไรน่าแปลกใจที่นี่: นกฮัมมิงเบิร์ดมีค่าความยาวสูงสุดน้อยที่สุดเมื่อเทียบกับนกกระทุงหรือนกห่าน ข้อมูลที่มีเหตุผลเป็นสิ่งที่ดี!

คุณสามารถสร้างการแสดงผลที่น่าสนใจมากขึ้นของกราฟแท่งโดยการซ้อนข้อมูล ลองซ้อนค่าความยาวขั้นต่ำและสูงสุดในหมวดหมู่นก:

ggplot(data=birds_grouped, aes(x=Category)) +
  geom_bar(aes(y=MaxLength), stat="identity", position ="identity",  fill='blue') +
  geom_bar(aes(y=MinLength), stat="identity", position="identity", fill='orange')+
  coord_flip()

super-imposed values

🚀 ความท้าทาย

ชุดข้อมูลนกนี้มีข้อมูลมากมายเกี่ยวกับนกประเภทต่างๆ ในระบบนิเวศเฉพาะ ลองค้นหาชุดข้อมูลเกี่ยวกับนกอื่นๆ บนอินเทอร์เน็ต และฝึกสร้างกราฟและแผนภูมิรอบๆ นกเหล่านี้เพื่อค้นพบข้อเท็จจริงที่คุณไม่เคยรู้มาก่อน

แบบทดสอบหลังเรียน

ทบทวนและศึกษาด้วยตนเอง

บทเรียนแรกนี้ได้ให้ข้อมูลเกี่ยวกับวิธีการใช้ ggplot2 เพื่อแสดงผลข้อมูลเชิงปริมาณ ลองค้นคว้าวิธีอื่นๆ ในการทำงานกับชุดข้อมูลเพื่อการแสดงผล ค้นคว้าและมองหาชุดข้อมูลที่คุณสามารถแสดงผลโดยใช้แพ็กเกจอื่นๆ เช่น Lattice และ Plotly

งานที่ได้รับมอบหมาย

Lines, Scatters, and Bars


ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามอย่างเต็มที่เพื่อความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ แนะนำให้ใช้บริการแปลภาษามนุษย์ที่เป็นมืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดซึ่งเกิดจากการใช้การแปลนี้