ข้อเสียเพียงข้อเดียวของการแก้ปัญหาgrid.arrange
คือพวกเขาทำให้การติดฉลากแปลงด้วยตัวอักษร (A, B, ฯลฯ ) เป็นเรื่องยากเนื่องจากวารสารส่วนใหญ่ต้องการ
ฉันเขียนแพ็กเกจcowplotเพื่อแก้ไขปัญหานี้ (และอีกไม่กี่) โดยเฉพาะฟังก์ชั่นplot_grid()
:
library(cowplot)
iris1 <- ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_boxplot() + theme_bw()
iris2 <- ggplot(iris, aes(x = Sepal.Length, fill = Species)) +
geom_density(alpha = 0.7) + theme_bw() +
theme(legend.position = c(0.8, 0.8))
plot_grid(iris1, iris2, labels = "AUTO")
วัตถุที่plot_grid()
ส่งคืนเป็นอีกหนึ่งวัตถุ ggplot2 และคุณสามารถบันทึกได้ggsave()
ตามปกติ:
p <- plot_grid(iris1, iris2, labels = "AUTO")
ggsave("plot.pdf", p)
หรือคุณสามารถใช้ฟังก์ชั่น cowplot save_plot()
ซึ่งเป็นเสื้อคลุมบาง ๆggsave()
ที่ช่วยให้ได้ขนาดที่ถูกต้องสำหรับแปลงรวมเช่น
p <- plot_grid(iris1, iris2, labels = "AUTO")
save_plot("plot.pdf", p, ncol = 2)
( ncol = 2
ข้อโต้แย้งบอกsave_plot()
ว่ามีสองแปลงแบบเคียงข้างกันและsave_plot()
ทำให้ภาพที่บันทึกไว้มีความกว้างเป็นสองเท่า)
สำหรับคำอธิบายเชิงลึกเพิ่มเติมเกี่ยวกับวิธีการจัดแปลงในตารางดูบทความสั้นนี้ นอกจากนี้ยังมีบทความสั้น ๆ ที่อธิบายวิธีการทำแปลงที่มีคำอธิบายประกอบ
หนึ่งในความสับสนที่พบบ่อยคือแพคเกจ cowplot เปลี่ยนธีม ggplot2 เริ่มต้น แพคเกจจะทำงานในลักษณะนั้นเพราะเดิมเขียนขึ้นสำหรับใช้ในห้องปฏิบัติการภายในและเราไม่เคยใช้ชุดรูปแบบเริ่มต้น หากสิ่งนี้ทำให้เกิดปัญหาคุณสามารถใช้หนึ่งในสามวิธีต่อไปนี้เพื่อแก้ไข:
1. ตั้งค่าธีมด้วยตนเองสำหรับทุกพล็อต ฉันคิดว่ามันเป็นแนวปฏิบัติที่ดีที่จะระบุธีมเฉพาะสำหรับแต่ละพล็อตเหมือนกับที่ฉันทำด้วย+ theme_bw()
ในตัวอย่างด้านบน หากคุณระบุธีมเฉพาะธีมเริ่มต้นนั้นไม่สำคัญ
2. เปลี่ยนชุดรูปแบบเริ่มต้นกลับเป็นค่าเริ่มต้น ggplot2 คุณสามารถทำได้ด้วยรหัสหนึ่งบรรทัด:
theme_set(theme_gray())
3. เรียกฟังก์ชั่น cowplot โดยไม่ต้องแนบแพ็คเกจ นอกจากนี้คุณยังไม่สามารถเรียกlibrary(cowplot)
หรือrequire(cowplot)
และแทนที่จะเรียกฟังก์ชัน cowplot โดย cowplot::
prepending เช่นตัวอย่างข้างต้นโดยใช้ชุดรูปแบบเริ่มต้น ggplot2 จะกลายเป็น:
## Commented out, we don't call this
# library(cowplot)
iris1 <- ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_boxplot()
iris2 <- ggplot(iris, aes(x = Sepal.Length, fill = Species)) +
geom_density(alpha = 0.7) +
theme(legend.position = c(0.8, 0.8))
cowplot::plot_grid(iris1, iris2, labels = "AUTO")
ปรับปรุง:
- ตั้งแต่ cowplot 1.0 ธีม ggplot2 เริ่มต้นจะไม่เปลี่ยนอีกต่อไป
- ตั้งแต่ ggplot2 3.0.0 แปลงสามารถติดป้ายได้โดยตรงดูที่นี่