ลบชื่อตำนานใน ggplot


111

ฉันกำลังพยายามลบชื่อของตำนานในggplot2:

df <- data.frame(
  g = rep(letters[1:2], 5),
  x = rnorm(10),
  y = rnorm(10)
)

library(ggplot2)
ggplot(df, aes(x, y, colour=g)) +
  geom_line(stat="identity") + 
  theme(legend.position="bottom")

ใส่คำอธิบายภาพที่นี่

ฉันเห็นคำถามนี้แล้วและดูเหมือนจะไม่มีทางแก้ปัญหาใด ๆ สำหรับฉัน ส่วนใหญ่ให้ข้อผิดพลาดเกี่ยวกับการoptsเลิกใช้งานและให้ใช้themeแทน ฉันได้พยายามยังมีรุ่นต่างๆของtheme(legend.title=NULL), theme(legend.title=""), theme(legend.title=element_blank)ข้อความ ฯลฯ ข้อผิดพลาดทั่วไปเป็น:

'opts' is deprecated. Use 'theme' instead. (Deprecated; last used in version 0.9.1)
'theme_blank' is deprecated. Use 'element_blank' instead. (Deprecated; last used in version 0.9.1)

ฉันใช้ggplot2เป็นครั้งแรกตั้งแต่เวอร์ชัน 0.9.3 เปิดตัวและฉันพบว่ามันยากที่จะนำทางการเปลี่ยนแปลงบางอย่าง ...


5
คุณสามารถใช้labs()สำหรับสิ่งนี้: เพิ่มบรรทัดlabs(colour = "")ลงในโค้ดของคุณที่สร้างกราฟด้านบน
Dennis

คำตอบ:


191

เกือบจะถึงแล้ว: เพียงแค่เพิ่ม theme(legend.title=element_blank())

ggplot(df, aes(x, y, colour=g)) +
  geom_line(stat="identity") + 
  theme(legend.position="bottom") +
  theme(legend.title=element_blank())

หน้านี้ใน Cookbook for Rให้รายละเอียดมากมายเกี่ยวกับวิธีปรับแต่งตำนาน


2
การดำเนินการนี้จะลบชื่อตำนานทั้งหมด สำหรับการควบคุมภายในเพิ่มเติมguide = guide_legend()คำสั่งจะทำงาน หากต้องการลบชื่อคำอธิบายการเติม แต่ให้คงชื่อคำอธิบายสีไว้เช่นscale_fill_brewer(palette = "Dark2", guide = guide_legend(title = NULL)) + scale_color_manual(values = c("blue", "white", "red"))
PatrickT

9

ใช้งานได้เช่นกันและยังสาธิตวิธีการเปลี่ยนชื่อตำนาน:

ggplot(df, aes(x, y, colour=g)) +
  geom_line(stat="identity") + 
  theme(legend.position="bottom") +
  scale_color_discrete(name="")

7
สิ่งนี้จะแทนที่ชื่อเรื่องด้วยสตริงว่างดังนั้นจึงทำให้มีช่องว่างเพิ่มเติมระหว่างป้ายกำกับและกล่องคำอธิบายแผนภูมิซึ่งจะมองเห็นได้ก็ต่อเมื่อคำอธิบายแผนภูมิมีกล่องหรือพื้นหลังที่มีสีแตกต่างจากตำแหน่ง ดังนั้นจึงไม่เป็นไรสำหรับวิธีการที่รวดเร็วและพร้อมใช้งานในกรณีง่ายๆเช่นtheme_bw()แต่ไม่ใช่วิธีที่ดีที่สุดในกรณีที่คำอธิบายแผนภูมิมีกรอบล้อมรอบและวางอยู่ที่ไหนสักแห่งบนพื้นที่พล็อต (แนวทางปกติของฉัน)
PatrickT

1
+1 สำหรับการสังเกต ฉันมีปัญหาในการใช้สองตำนานที่แตกต่างกันและช่องว่างระหว่างพวกเขาที่สร้างขึ้นโดยโซลูชันข้างต้น การตั้งค่าscale_color_manual(name=element_blank())+สำหรับตำนานด้านล่างแก้ไขให้ฉัน
joaoal

@joaoal element_blank()ดูเหมือนจะเป็นแนวทางที่แนะนำ การตั้งค่าname = NULL เป็นอีกวิธีหนึ่ง
PatrickT

1

โดยใช้อีกและการตั้งค่าสีเพื่อlabsNULL

ggplot(df, aes(x, y, colour = g)) +
  geom_line(stat = "identity") +
  theme(legend.position = "bottom") +
  labs(colour = NULL)

ใส่คำอธิบายภาพที่นี่


0

สำหรับError: 'opts' is deprecated. ใช้theme()แทน (Defunct; ใช้ล่าสุดในเวอร์ชัน 0.9.1) 'ฉันแทนที่opts(title = "Boxplot - Candidate's Tweet Scores")ด้วย labs(title = "Boxplot - Candidate's Tweet Scores"). มันได้ผล!


0

เนื่องจากคุณอาจมีมากกว่าหนึ่งตำนานในพล็อตวิธีการเลือกลบเพียงหนึ่งในชื่อเรื่องโดยไม่ปล่อยให้มีพื้นที่ว่างคือการตั้งค่าnameอาร์กิวเมนต์ของscale_ฟังก์ชันเป็นNULLเช่น

scale_fill_discrete(name = NULL)

(ขอชื่นชม @pascal สำหรับความคิดเห็นในกระทู้อื่น )

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