ggplot กับฟอนท์ภาษาไทย

มีคนถามมาว่าถ้าจะพิมพ์ภาษาไทยในกราฟที่สร้างจาก ggplot แล้ว save เป็น pdf ต้องทำอย่างไร เพราะที่ทำมามันไม่แสดงผลอะไรเลย

วิธีที่ง่ายที่สุด(ที่ผมใช้อยู่)ตอนนี้ก็คือใช้ package ที่ชื่อ extrafont ช่วยครับ ตามนี้

  1. ติดตั้ง package ที่ชื่อว่า extrafont หลังจากนั้นก็ load package ด้วยคำสั่ง library
  2. ทำการ import fonts ที่มีในคอมพิวเตอร์ด้วยเพื่อสร้างฐานข้อมูล fonts ของ package นี้ ด้วยคำสั่ง font_import() ทำครั้งแรกนี้ครั้งเดียวครับ อาจจะใช้เวลานานหน่อย แต่ถ้ามีการลงฟอนท์เพิ่มก็ต้องมารันคำสั่งนี้อีกนะครับ
  3. ลองพิมพ์คำสั่ง fonts() ดูครับว่ามัน import ฟอนท์อะไรเสร็จไปแล้วบ้าง
  4. จากนั้นก็ทำการ load fonts เพื่อเอามาใช้กับเอกสาร pdf ที่จะสร้างครับ ด้วยคำสั่ง loadfonts()  (คราวหน้าก็ไม่ต้องใช้คำสั่งนี้ครับ สามารถเรียก library(extrafont) ได้เลย มันจะทำให้อัตโนมัต) โดยค่าที่ตั้งไว้แล้ว(default) มันจะโหลดไปใช้กับตัวpdfครับ แต่ถ้าอยากจะให้มันแสดงผลและใช้ได้กับพวกไฟล์ภาพอย่าง png ก็ตั้งมีการเซ็ตค่าพารามิเตอร์ device=”win”ครับ สำหรับใช้งานบนวินโดว์ (ลองดูในตัวอย่างcodeที่ผมพิมพ์นะครับ)
  5. ทดลองสร้างกราฟด้วย ggplot แล้ว save ป็น pdf
library(extrafont)
library(ggplot2)

loadfonts(device="win")
loadfonts(device="pdf")
p <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
  ggtitle("ประสิทธิภาพของเชื้อเพลิง") +
  xlab("น้ำหนัก (x1000 ปอนด์)") + ylab("ไมล์ต่อแกลอน") +
  theme(text=element_text(size=16, family="TH Mali Grade 6"));
p
ggsave("THfont_ggplot.pdf", plot=p,  width=4, height=4, device = cairo_pdf)