ปิดตำนานบางส่วนใน ggplot


221

สมมติว่าฉันมี ggplot ที่มีมากกว่าหนึ่งตำนาน

mov <- subset(movies, length != "")
(p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()
)

ฉันสามารถปิดการแสดงตำนานทั้งหมดเช่นนี้:

(p1 <- p0 + theme(legend.position = "none"))

การส่งผ่านshow_guide = FALSEไปยังgeom_point(ตามคำถามนี้ ) จะปิดตำนานรูปร่าง

(p2 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point(show_guide = FALSE)
)

แต่ถ้าฉันต้องการปิดตำนานสีแทน? ดูเหมือนจะไม่มีวิธีบอกเล่าshow_guideตำนานที่ใช้พฤติกรรมของมันกับ และไม่มีshow_guideข้อโต้แย้งสำหรับตาชั่งหรือสุนทรียภาพ

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  scale_colour_discrete(show_guide = FALSE) +
  geom_point()
)
# Error in discrete_scale

(p4 <- ggplot(mov, aes(year, rating, shape = mpaa)) +
  aes(colour = length, show_guide = FALSE) +
  geom_point()
)
#draws both legends

คำถามนี้แสดงให้เห็นว่าวิธีการควบคุมตำนานที่ทันสมัย ​​(ตั้งแต่ ggplot2 v0.9.2) อยู่ที่guidesฟังก์ชัน

ฉันต้องการที่จะทำอะไรบางอย่างเช่น

p0 + guides(
  colour = guide_legend(show = FALSE) 
)

แต่guide_legendไม่มีอาร์กิวเมนต์สำหรับการแสดง

ฉันจะระบุตำนานที่จะแสดงได้อย่างไร


6
หลังจากที่ผ่านมาggplot2อัปเดตได้รับการคัดค้านและถูกแทนที่ด้วยshow_guide show.legend
PatrickT

คำตอบ:


294

คุณสามารถใช้guide=FALSEในscale_..._...()การระงับตำนาน

สำหรับตัวอย่างของคุณคุณควรใช้scale_colour_continuous()เพราะlengthเป็นตัวแปรต่อเนื่อง (ไม่ต่อเนื่อง)

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
   scale_colour_continuous(guide = FALSE) +
   geom_point()
)

หรือการใช้ฟังก์ชั่นguides()ที่คุณควรตั้งFALSEสำหรับองค์ประกอบที่ / fillความงามที่คุณไม่ต้องการที่จะปรากฏเป็นตำนานเช่นshape, colour,

p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()    
p0+guides(colour=FALSE)

UPDATE

โซลูชันที่ให้ทั้งสองทำงานในggplot2เวอร์ชันใหม่2.0.0 แต่moviesชุดข้อมูลไม่ได้อยู่ในห้องสมุดนี้อีกต่อไป แต่คุณต้องใช้แพ็คเกจใหม่ggplot2moviesเพื่อตรวจสอบวิธีแก้ไขปัญหาเหล่านั้น

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")

6
scale_colour_continuous (guide = FALSE) ไม่ทำงานใน ggplot2 0.9.3 แต่คำแนะนำ (color = FALSE) แก้ปัญหาได้ ขอบคุณมาก Didzis!
Nikolay Nenov

1
@NikolayNenov แปลกเพราะทั้งสองวิธีแก้ปัญหาได้ดีกับฉันด้วย ggplot2 0.9.3.1
Didzis Elferts

9
ฉันต้องการที่จะเอาตำนานของอัลฟา guides(alpha=FALSE)ทำเคล็ดลับ ขอบคุณ Didzis
l0o0

3
หมายเหตุตนเอง: ถ้าคุณมีgeom_linerange()ตำนานและมีการแสดงข้ามแทนบรรทัดแทรกภายในshow.legend=FALSE geom_linerange()
PatrickT

25

คุณสามารถเพิ่มshow.legend=FALSEgeom เพื่อระงับคำอธิบายที่เกี่ยวข้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.