เนื่องจากคำถามและคำตอบของผู้ใช้340026เป็นคำค้นหายอดนิยมฉันได้ทำตัวอย่างที่ทำซ้ำได้และภาพประกอบสั้น ๆ ของคำแนะนำที่ได้ทำไปพร้อมกับโซลูชันที่ตอบคำถามของ OP อย่างชัดเจน
หนึ่งในสิ่งที่ggplot2
ทำและสิ่งที่ทำให้สับสนคือมันผสมผสานตำนานบางอย่างโดยอัตโนมัติเมื่อพวกมันเกี่ยวข้องกับตัวแปรเดียวกัน ตัวอย่างเช่นfactor(gear)
ปรากฏสองครั้งหนึ่งครั้งlinetype
และครั้งเดียวfill
ส่งผลให้เกิดตำนานรวมกัน ในทางตรงกันข้ามมีรายการตำนานของตัวเองที่ยังไม่ได้รับการปฏิบัติเหมือนเช่นเดียวกับgear
factor(gear)
การแก้ปัญหาที่เสนอมักจะทำงานได้ดี แต่บางครั้งคุณอาจจำเป็นต้องแทนที่คำแนะนำ ดูตัวอย่างสุดท้ายของฉันที่ด้านล่าง
# reproducible example:
library(ggplot2)
p <- ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs)) +
geom_point(aes(shape = factor(cyl))) +
geom_line(aes(linetype = factor(gear))) +
geom_smooth(aes(fill = factor(gear), color = gear)) +
theme_bw()
ลบตำนานทั้งหมด: @ user3490026
p + theme(legend.position = "none")
ลบตำนานทั้งหมด: @duhaime
p + guides(fill = FALSE, color = FALSE, linetype = FALSE, shape = FALSE)
ปิดตำนาน: @Tjebo
ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs), show.legend = FALSE) +
geom_point(aes(shape = factor(cyl)), show.legend = FALSE) +
geom_line(aes(linetype = factor(gear)), show.legend = FALSE) +
geom_smooth(aes(fill = factor(gear), color = gear), show.legend = FALSE) +
theme_bw()
ลบการเติมเพื่อให้ linetype มองเห็นได้
p + guides(fill = FALSE)
เหมือนกับด้านบนผ่านฟังก์ชัน scale_fill_:
p + scale_fill_discrete(guide = FALSE)
และตอนนี้มีคำตอบที่เป็นไปได้สำหรับคำขอของ OP
"เพื่อรักษาตำนานของเลเยอร์หนึ่ง (ราบรื่น) และลบเลเจนด์ของอีกเลเยอร์ (จุด)"
เปิดบางอย่างปิดการโพสต์เฉพาะกิจ
p + guides(fill = guide_legend(override.aes = list(color = NA)),
color = FALSE,
shape = FALSE)