Câu hỏi Cách thay đổi tiêu đề chú giải trong ggplot


Tôi có cốt truyện như sau. Nó được tạo ra với lệnh này:

library(ggplot2)

df <- data.frame(cond = factor(rep(c("A", "B"), each = 200)), 
                 rating = c(rnorm(200), rnorm(200, mean=.8)))

ggplot(df, aes(x=rating, fill=cond)) + 
geom_density(alpha = .3) +
xlab("NEW RATING TITLE") +
ylab("NEW DENSITY TITLE")

Bây giờ điều tiếp theo tôi muốn làm là sửa đổi tiêu đề chú giải từ cond vào NEW LEGEND TITLE.

Vì vậy, những gì tôi đã làm là chỉ cần thêm dòng sau thêm phần cuối của mã trên:

+labs(colour="NEW LEGEND TITLE")

Nhưng nó không hoạt động. Cách thích hợp để làm điều đó là gì?

enter image description here


158
2018-01-31 09:31


gốc


labs(fill="xyz") nên làm - baptiste
@ baptiste Tôi đã quay lại câu hỏi này nhiều lần mà không nhận thấy bình luận của bạn, bạn có thể viết nó như là một câu trả lời không? IMO là giải pháp đơn giản nhất và xứng đáng được công nhận - User632716
@ User632716 nó đã có trong câu trả lời của ai đó bên dưới - baptiste
nó không hoạt động... - shenglih


Các câu trả lời:


Điều này sẽ hoạt động:

p <- ggplot(df, aes(x=rating, fill=cond)) + 
           geom_density(alpha=.3) + 
           xlab("NEW RATING TITLE") + 
           ylab("NEW DENSITY TITLE")
p <- p + guides(fill=guide_legend(title="New Legend Title"))

(Hay cách khác)

p + scale_fill_discrete(name = "New Legend Title")

211
2018-01-31 09:35



Một lựa chọn khác là p$labels$fill <- "New Legend Title" - Alex Holcombe
sự khác biệt giữa hướng dẫn và scale_fill_discrete là gì - Medhat Helmy
p$labels$fill không làm việc cho tôi. Với ggplot2_2.1.0 tôi sử dụng p$labels$colour <- "New legend title" - clemlaflemme
p$labels$fill  là tốt đẹp nhưng nếu bạn đang sử dụng nhiều hơn một biến trong thẩm mỹ (linetype, màu sắc, hình dạng) trong aes, bạn phải thay đổi chúng cho từng riêng biệt. - discipulus


Tôi không đào sâu vào điều này nhưng vì bạn đã sử dụng fill = cond trong ggplot (),

 + labs(color='NEW LEGEND TITLE') 

có thể không có tác dụng. Tuy nhiên, bạn thay thế màu bởi lấp đầy, nó hoạt động!

+ labs(fill='NEW LEGEND TITLE') 

Điều này làm việc cho tôi trong ggplot2_2.1.0

P.S. Tôi đã có thể nhận xét nhưng danh tiếng stackoverflow của tôi là không đủ để bình luận.


96
2017-08-14 03:04



Tôi nghĩ rằng đây là câu trả lời khó nhất, nó thực hiện chính xác những gì OP yêu cầu với một dòng thêm nhiều nhất - Leo
cả color = và fill = đều hoạt động. Đây là câu trả lời "đúng" cho câu hỏi, IMO - Dan
cho dù màu sắc của điền sẽ làm việc phụ thuộc vào những gì "cond" (hoặc nhóm trong các trường hợp khác) thực sự là ánh xạ tới. Một lời giải thích tốt có thể được tìm thấy trong cookbook-r.com/Graphs/Legends_(ggplot2) - user1442363


Vì bạn có hai mật độ tôi tưởng tượng bạn có thể muốn thiết lập màu sắc của riêng bạn với scale_fill_manual.

Nếu vậy bạn có thể làm:

df <- data.frame(x=1:10,group=c(rep("a",5),rep("b",5)))

legend_title <- "OMG My Title"

ggplot(df, aes(x=x, fill=group)) + geom_density(alpha=.3) +   
    scale_fill_manual(legend_title,values=c("orange","red"))

enter image description here


28
2018-01-31 09:39





Vì trong mã của bạn, bạn đã sử dụng ggplot(data, fill= cond) để tạo biểu đồ, bạn cần phải thêm tiêu đề chú giải bằng cách sử dụng "điền" trong phần nhãn, tức là +labs(fill="Title name"). Nếu bạn đang sử dụng một loại cốt truyện khác có mã là ggplot (dữ liệu, color = cond), thì bạn có thể sử dụng +labs(colour= "Title Name"). Tóm lại, đối số lab phải khớp với đối số aes.

tôi đã sử dụng + guides(fill=guide_legend("my awesome title")) để thay đổi tiêu đề chú thích trên các ô geom_bar nhưng nó dường như không hoạt động cho geom_point.


8
2017-08-16 15:48



..., nhưng đối với geom_point(), điều này phù hợp với tôi: guides(color=guide_legend("Type:")) - knb
@knb, phương pháp của bạn hoạt động: guides(color=guide_legend("Score Ranking:")) - bmc


Có một câu trả lời rất đơn giản khác có thể làm việc cho một số đồ thị đơn giản.

Chỉ cần thêm lệnh gọi guide_legend () vào biểu đồ của bạn.

ggplot(...) + ... + guide_legend(title="my awesome title")

Như thể hiện trong rất tốt đẹp tài liệu ggplot.

Nếu điều đó không hiệu quả, bạn có thể thiết lập chính xác hơn các thông số hướng dẫn của mình bằng một cuộc gọi đến hướng dẫn:

ggplot(...) + ... + guides(fill=guide_legend("my awesome title"))

Bạn cũng có thể thay đổi hình dạng / màu / kích thước bằng cách chỉ định các thông số này cho cuộc gọi của bạn guides cũng.


2
2017-08-23 16:49



không hoạt động khi có nhiều hơn một chú giải. - rmf
Điều này không hiệu quả với tôi, nhưng qplot(…) + guides(color=guide_legend(title="sale year")) đã làm việc - Arnaud A
Cảm ơn @ArnaudA, tôi đã cập nhật câu trả lời - Yourpalal


Không có mã nào ở trên làm việc cho tôi.

Đây là những gì tôi tìm thấy và nó hoạt động.

labs(color = "sale year")

Bạn cũng có thể cung cấp khoảng cách giữa tiêu đề và hiển thị bằng cách thêm \n cuối cùng.

labs(color = 'sale year\n")


2
2017-07-25 15:54





Tôi đang sử dụng một facet_wrap trong ggplot của tôi và không ai trong số các giải pháp được đề xuất làm việc cho tôi ngoại trừ giải pháp của ArnaudA:

qplot(…) + guides(color=guide_legend(title="sale year")) 

0
2017-09-20 11:24