การสร้างภาพกราฟิกใน R ด้วย ggplot2

R สำหรับผู้ใช้ SAS

Melinda Higgins, PhD

Research Professor/Senior Biostatistician Emory University

แพ็กเกจ ggplot2

โลโก้ hexsticker ของ ggplot2

  • ggplot2 เป็นแพ็กเกจกราฟิกที่ทรงพลังสำหรับ R
  • "GG" ใน ggplot ย่อมาจาก "grammar of graphics"
  • ggplot2 ใช้แนวทางแบบเลเยอร์ในการสร้างกราฟิก
  • เพิ่มออบเจกต์ทางเรขาคณิตหนึ่งรายการขึ้นไปลงบนเลเยอร์กราฟิกพื้นฐาน
R สำหรับผู้ใช้ SAS

เลเยอร์ - เลเยอร์พื้นฐาน

# Create plot for x=sex and y=diameter
ggplot(data = abalone, aes(sex, diameter))
  • กำหนดเลเยอร์พื้นฐานด้วย ggplot()
  • กำหนด data = abalone
  • กำหนด aes เป็น sex และ diameter

  • ยังไม่มีออบเจกต์กราฟิกในพล็อต

  • แกน x พร้อมสำหรับ sex
  • แกน y พร้อมสำหรับ diameter
  • จัดวางกริดเรียบร้อย

สภาพแวดล้อมกราฟิกของ ggplot2 ที่ยังไม่มี boxplot

R สำหรับผู้ใช้ SAS

เลเยอร์ - เพิ่ม geom สำหรับ boxplot

# Add boxplot geometric object or geom
ggplot(data = abalone,
       aes(sex, diameter)) +
  geom_boxplot()
  • ตัวดำเนินการบวก + ใช้เพิ่มเลเยอร์
  • เพิ่ม boxplot ด้วย geom_boxplot()

  • ผลลัพธ์คือชุดของ boxplot

  • เส้นผ่านศูนย์กลางของหอยเป๋าฮื้อแยกตามเพศ
  • F คือเพศเมีย I คือตัวอ่อน และ M คือเพศผู้

เพิ่ม boxplot ด้วย ggplot2 แล้ว

R สำหรับผู้ใช้ SAS

เลเยอร์ - เพิ่มธีม

# Add black white theme
ggplot(data = abalone,
       aes(sex, diameter)) +
  geom_boxplot() +
  theme_bw()
  • เพิ่มเลเยอร์ "theme" ด้วย theme_bw()
  • ลบพื้นหลังสีเทาออก
  • วาดกรอบสีดำรอบพล็อต

เพิ่มธีมขาวดำให้ boxplot ของ ggplot2 แล้ว

R สำหรับผู้ใช้ SAS

เปลี่ยน geom จาก boxplot เป็น violin

# Change to geom_violin()
ggplot(data = abalone,
       aes(sex, diameter)) +
  geom_violin() +
  theme_bw()
  • geom_violin แทนที่ geom_boxplot
  • สร้างรูปทรงคล้ายไวโอลิน
  • สะท้อนการกระจายความหนาแน่นของข้อมูล
  • ปรับเปลี่ยนเพียงเล็กน้อยเพื่อสร้างกราฟใหม่

พล็อตไวโอลินของ ggplot2

R สำหรับผู้ใช้ SAS

ฮิสโทแกรมตัวแปรเดียว

# Make histogram of shuckedWeight
ggplot(abalone, aes(shuckedWeight)) +
  geom_histogram()
  • สร้างฮิสโทแกรมสำหรับหนึ่งตัวแปร
  • หนึ่งตัวแปร เท่ากับหนึ่ง aesthetic
  • เพิ่ม geom_histogram()
  • กำหนด aes() เป็น shuckedWeight
  • ต้องเปลี่ยนสีเริ่มต้น

ฮิสโทแกรมของ ggplot2 ที่เป็นสีดำทั้งหมด

R สำหรับผู้ใช้ SAS

ฮิสโทแกรม - เพิ่มสี

# Make lines black and fill light blue
ggplot(abalone, aes(shuckedWeight)) +
  geom_histogram(color = "black",
                 fill = "lightblue")
  • เปลี่ยนพารามิเตอร์กราฟิก
  • กำหนด color ของเส้นขอบแท่ง
  • กำหนดสี fill ของแท่ง
  • แต่ละตัวเลือกกำหนดไว้ภายใน ()
  • ฮิสโทแกรมดูดีขึ้นมาก

ฮิสโทแกรมของ ggplot2 ที่มีแท่งสีฟ้าและเส้นขอบสีดำ

R สำหรับผู้ใช้ SAS

ฮิสโทแกรม - เพิ่มชื่อเรื่องและป้ายกำกับแกน

# Add x, y axis labels and title
ggplot(abalone, aes(shuckedWeight)) +
  geom_histogram(color = "black",
                 fill = "lightblue") +
  xlab("Shucked Weight") +
  ylab("Frequency Counts") +
  ggtitle("Shucked Weights Histogram")
  • เพิ่มป้ายกำกับแกนและชื่อเรื่องให้ดีขึ้น
  • ใช้ xlab() และ ylab() สำหรับแกน
  • ใช้ ggtitle() สำหรับชื่อเรื่อง
  • กราฟนี้พร้อมเผยแพร่แล้ว!

ฮิสโทแกรมของ ggplot2 ที่เพิ่มป้ายกำกับแกนและชื่อเรื่องแล้ว

R สำหรับผู้ใช้ SAS

สร้าง scatterplot

# Make scatterplot with geom_point()
ggplot(abalone,
       aes(rings, shellWeight)) +
  geom_point()
  • scatterplot ต้องใช้ aes สองตัวแปร
  • geom_point() ใช้เพิ่มจุดข้อมูล
  • scatterplot ของน้ำหนักเปลือกตามจำนวนวงแหวน

scatterplot ของ ggplot2 แสดงน้ำหนักเปลือกตามจำนวนวงแหวน

R สำหรับผู้ใช้ SAS

Scatterplot - เพิ่มเส้นแนวโน้มแบบ smoothed

# Add smoothed fit line
ggplot(abalone,
       aes(rings, shellWeight)) +
  geom_point() +
  geom_smooth()
  • เพิ่มเส้น geom_smooth() ลงใน scatterplot
  • รวมพื้นที่แรเงาแสดงช่วงความเชื่อมั่น

scatterplot ของ ggplot2 ที่เพิ่มเส้นแนวโน้มแบบ smoothed แล้ว

R สำหรับผู้ใช้ SAS

สร้างแผงย่อยตามตัวแปรอื่น

# Add panels using facet_wrap()
ggplot(abalone,
       aes(rings, shellWeight)) +
  geom_point() +
  geom_smooth() +
  facet_wrap(vars(sex))
  • เพิ่มอีกหนึ่งเลเยอร์ลงใน scatterplot
  • สร้างแผงย่อยสำหรับหอยเป๋าฮื้อแต่ละเพศ
  • เพิ่มเลเยอร์ facet_wrap()
  • vars(sex) กำหนดตัวแปรสำหรับแผงย่อย

scatterplot ของ ggplot2 ที่แบ่งเป็น 3 แผงย่อยตามเพศ

R สำหรับผู้ใช้ SAS

เนื้อหาที่เหลือของคอร์ส

  • บทที่ 1 ปิดท้ายด้วยการแนะนำกราฟิกเบื้องต้น
    • พื้นฐานทักษะกราฟิกด้วย ggplot2
    • แสดงภาพการวัดค่าหอยเป๋าฮื้อแยกตามเพศ
  • บทที่ 2 สอนทักษะการจัดการข้อมูล
    • ทำความสะอาดชุดข้อมูลหอยเป๋าฮื้อ
  • บทที่ 3 สอนวิธีการสำรวจข้อมูล
    • สถิติเชิงพรรณนา ความสัมพันธ์ และการทดสอบเปรียบเทียบ
  • บทที่ 4 สอนการสร้างโมเดลและการนำเสนอผลลัพธ์
    • ทำนายอายุหอยเป๋าฮื้อจากค่าที่วัดได้
    • สำรวจโมเดลแยกตามเพศ
R สำหรับผู้ใช้ SAS

มาสร้างกราฟสำหรับหอยเป๋าฮื้อกัน

R สำหรับผู้ใช้ SAS

Preparing Video For Download...