ลบ "a" ออกจากคำอธิบายเมื่อใช้สุนทรียศาสตร์และ geom_text


124

ฉันจะลบตัวอักษร 'a' ออกจากคำอธิบายแผนภูมิที่สร้างโดยรหัสนี้ได้อย่างไร หากฉันลบgeom_textตัวอักษร "a" จะไม่ปรากฏในคำอธิบายแผนภูมิ ฉันต้องการให้geom_textแต่

ggplot(data = iris, aes(x = Sepal.Length, y=Sepal.Width, shape = Species, colour = Species)) + 
   geom_point() + 
   geom_text(aes(label = Species))

คำตอบ:


142

ตั้งค่าshow.legend = FALSEในgeom_text:

ggplot(data = iris,
       aes(x = Sepal.Length, y = Sepal.Width, colour = Species, shape = Species, label = Species)) + 
    geom_point() +
    geom_text(show.legend = FALSE)

อาร์กิวเมนต์show_guideเปลี่ยนชื่อเป็นshow.legendในggplot2 2.0.0( ดูข่าวเผยแพร่ )


ก่อนggplot2 2.0.0:

ด้วยshow_guide = FALSEเช่นนั้น ...

ggplot( data=iris, aes(x=Sepal.Length, y=Sepal.Width , colour = Species , shape = Species, label = Species ) , size=20 ) + 
geom_point()+
geom_text( show_guide  = F )

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


3
การตั้งค่าshow.legendไปFALSEในggplot23.2.1 จะลบตำนานโดยสิ้นเชิง!
NelsonGon

14

ผมมีปัญหาที่คล้ายกัน วิธีแก้ปัญหาของ Simon ได้ผลสำหรับฉัน แต่จำเป็นต้องบิดเล็กน้อย ฉันไม่รู้ว่าฉันต้องเพิ่ม "show_guide = F" ให้กับอาร์กิวเมนต์ของ geom_text แทนที่จะแทนที่ด้วยอาร์กิวเมนต์ที่มีอยู่ซึ่งเป็นสิ่งที่วิธีแก้ปัญหาของ Simon แสดงให้เห็น สำหรับ ggplot2 noob อย่างฉันมันไม่ได้ชัดเจนขนาดนั้น ตัวอย่างที่เหมาะสมจะใช้รหัสของ OP และเพิ่งเพิ่มอาร์กิวเมนต์ที่ขาดหายไปเช่นนี้:

..
geom_text(aes(label=Species), show_guide = F) +
..

9

เหมือนที่นิคพูด

รหัสต่อไปนี้จะยังคงทำให้เกิดข้อผิดพลาด:

geom_text(aes(x=1,y=2,label="",show_guide=F))

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

ขณะที่:

geom_text(aes(x=1,y=2,label=""),show_guide=F)

นอกอาร์กิวเมนต์ aes กำจัด a over the Legend

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


มีวิธีใดในการปรับแต่ง 'a' เป็นอย่างอื่นเช่น 'r' หรือไม่?
asalimih

8

เราสามารถใช้guide_legend(override.aes = aes(...))ซ่อน 'a' ในคำอธิบายแผนภูมิได้

ด้านล่างนี้เป็นตัวอย่างสั้น ๆ เกี่ยวกับวิธีที่คุณอาจใช้guide_legend ()

library(ggrepel)
#> Loading required package: ggplot2

d <- mtcars[c(1:8),]

p <- ggplot(d, aes(wt, mpg)) +
  geom_point() +
  theme_classic(base_size = 18) +
  geom_label_repel(
    aes(label = rownames(d), fill = factor(cyl)),
    size = 5, color = "white"
  )

# Let's see what the default legend looks like.
p

# Now let's override some of the aesthetics:
p + guides(
  fill = guide_legend(
    title = "Legend Title",
    override.aes = aes(label = "")
  )
)

สร้างเมื่อ 2019-04-29 โดยแพ็คเกจ reprex (v0.2.1)


ฉันคิดว่านี่เป็นวิธีแก้ปัญหาที่ดีกว่าวิธีที่ได้รับการยอมรับเนื่องจากอนุญาตให้ลบตัวอักษร 'a' ออกจากตำนานโดยเฉพาะในขณะที่สุนทรียศาสตร์อื่น ๆ สามารถยังคงไม่มีใครแตะต้องได้หากต้องการ
Markel

1

คุณยังสามารถใช้show.legend = FALSEในอาร์กิวเมนต์geom_label_repel()เพื่อลบ "a" ในคำอธิบายแผนภูมิ ดังนั้นแทนที่จะเป็น

ggplot(d, aes(wt, mpg)) +
  geom_point() +
  theme_classic(base_size = 18) +
  geom_label_repel(
    aes(label = rownames(d), fill = factor(cyl)),
    size = 5, color = "white"
  )+ guides(
  fill = guide_legend(
    title = "Legend Title",
    override.aes = aes(label = "")
  )
)

คุณทำได้,

ggplot(d, aes(wt, mpg)) +
  geom_point() +
  theme_classic(base_size = 18) +
  geom_label_repel(
    aes(label = rownames(d), fill = factor(cyl)),
    size = 5, color = "white",
    show.legend = FALSE  )

0

ผมมีปัญหาที่คล้ายกันกับ 'a' geom_text_repelที่ปรากฏอยู่ด้านหลังจุดสีที่แตกต่างกันผมพยายามที่จะฉลากด้วย ในการลบ 'a' เพื่อให้มันแสดงจุดโดยไม่มี 'a' อยู่ข้างหลังฉันต้องเพิ่มshow.legend=FALSEเป็นอาร์กิวเมนต์ในgeom_text_repel.

หวังว่าคงสมเหตุสมผลสำหรับทุกคนที่อาจกำลังเผชิญกับปัญหาเดียวกัน!

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