Tắt một số huyền thoại trong một ggplot


221

Giả sử tôi có một ggplot với nhiều hơn một huyền thoại.

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

Tôi có thể tắt hiển thị tất cả các huyền thoại như thế này:

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

Chuyển show_guide = FALSEđến geom_point(theo câu hỏi này ) tắt huyền thoại hình dạng.

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

Nhưng nếu tôi muốn tắt huyền thoại màu thay thế thì sao? Dường như không có cách nào để nói show_guidehuyền thoại nào áp dụng hành vi của nó vào. Và không có show_guidetranh luận cho quy mô hoặc thẩm mỹ.

(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

Câu hỏi này gợi ý rằng cách kiểm soát truyền thuyết hiện đại (kể từ ggplot2 v0.9.2) là với guideschức năng.

Tôi muốn có thể làm một cái gì đó như

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

nhưng guide_legendkhông có một đối số hiển thị.

Làm cách nào để chỉ định truyền thuyết nào được hiển thị?


6
Sau một ggplot2bản cập nhật gần đây , show_guideđã bị phản đối và thay thế bởi show.legend.
PatrickT

Câu trả lời:


294

Bạn có thể sử dụng guide=FALSEtrong scale_..._...()truyền thuyết đàn áp.

Ví dụ của bạn, bạn nên sử dụng scale_colour_continuous()lengthlà biến liên tục (không rời rạc).

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

Hoặc sử dụng chức năng guides()bạn nên thiết lập FALSEcho các phần tử đó / thẩm mỹ mà bạn không muốn xuất hiện như truyền thuyết, ví dụ, fill, shape, colour.

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

CẬP NHẬT

Cả hai giải pháp được cung cấp đều hoạt động trong ggplot2phiên bản mới 2.0.0 nhưng moviesbộ dữ liệu không còn xuất hiện trong thư viện này. Thay vào đó bạn phải sử dụng gói mới ggplot2moviesđể kiểm tra các giải pháp đó.

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

6
Scale_colour_continupt (guide = FALSE) không hoạt động trong ggplot2 0.9.3 nhưng hướng dẫn (color = FALSE) giải quyết vấn đề. Cảm ơn Didzis rất nhiều!
Nikolay Nenov

1
@NikolayNenov Lạ, bởi vì cả hai giải pháp đều hoạt động với tôi với ggplot2 0.9.3.1
Didzis Elferts

9
Tôi muốn xóa huyền thoại về alpha . guides(alpha=FALSE)làm mánh khóe Cảm ơn, Didzis.
l0o0

3
Lưu ý đến bản thân: nếu bạn có một geom_linerange()và chú thích đang hiển thị chữ thập thay vì một dòng, hãy chèn vào show.legend=FALSEbên trong geom_linerange().
PatrickT

25

Bạn chỉ có thể thêm show.legend=FALSEvào geom để chặn huyền thoại tương ứng

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.