Xóa 'a' khỏi chú giải khi sử dụng thẩm mỹ và geom_text


124

Làm cách nào để xóa ký tự 'a' khỏi chú giải do mã này tạo ra? Nếu tôi xóa dấu geom_text, thì chữ 'a' sẽ không hiển thị trong chú giải. Tôi muốn giữ lại geom_text, mặc dù vậy.

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

Câu trả lời:


142

Đặt show.legend = FALSEtrong 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)

Đối số show_guideđã đổi tên thành show.legendin ggplot2 2.0.0( xem tin tức phát hành ).


Trướcggplot2 2.0.0 :

Với show_guide = FALSEnhư vậy ...

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 )

nhập mô tả hình ảnh ở đây


3
Thiết show.legendđể FALSEggplot23.2.1 sẽ loại bỏ các huyền thoại hoàn toàn!
NelsonGon

14

Tôi đã có một vấn đề tương tự . Giải pháp của Simon có hiệu quả với tôi nhưng cần phải có một chút thay đổi nhỏ. Tôi không nhận ra rằng tôi cần thêm "show_guide = F" vào các đối số của geom_text, thay vì thay thế bằng các đối số hiện có - đó là những gì giải pháp của Simon cho thấy. Đối với một noob ggplot2 như tôi, điều này không quá rõ ràng. Một ví dụ thích hợp sẽ sử dụng mã của OP và chỉ cần thêm đối số bị thiếu như sau:

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

9

Như Nick đã nói

mã sau sẽ vẫn tạo ra lỗi:

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

nhập mô tả hình ảnh ở đây

trong khi:

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

bên ngoài đối số aes loại bỏ a trên chú giải

nhập mô tả hình ảnh ở đây


Có cách nào để tùy chỉnh 'a' thành một cái gì đó khác như 'r' không?
asalimih

8

Chúng ta có thể sử dụng guide_legend(override.aes = aes(...))để ẩn chữ 'a' trong chú giải.

Dưới đây là một ví dụ ngắn về cách bạn có thể sử dụng 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 = "")
  )
)

Được tạo vào 2019-04-29 bởi gói reprex (v0.2.1)


Tôi nghĩ rằng đây là một giải pháp tốt hơn so với giải pháp được chấp nhận, vì nó cho phép loại bỏ đặc biệt chữ 'a' khỏi chú giải, trong khi các thẩm mỹ khác, nếu muốn, vẫn không bị ảnh hưởng.
Markel

1

Bạn cũng có thể sử dụng show.legend = FALSEtrong các đối số của geom_label_repel()để loại bỏ "a" trong chú giải. Vì vậy, thay vì

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 = "")
  )
)

bạn có thể làm,

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

Tôi đã gặp sự cố tương tự, với một 'a' xuất hiện phía sau các điểm màu khác nhau mà tôi đang cố gắn nhãn geom_text_repel. Để loại bỏ 'a', để nó chỉ hiển thị điểm mà không có 'a' đằng sau nó, tôi phải thêm show.legend=FALSElàm đối số tronggeom_text_repel .

Hy vọng điều đó có ý nghĩa đối với bất kỳ ai có thể đang gặp phải vấn đề tương tự!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.