2015-02-12 16 views
5

Tôi muốn có nhãn geom_text() mang họ phông chữ theo biến. Theo ví dụ trên ggplot2 docs (di chuyển xuống phía dưới), tôi đã làm điều này (giống như trong tài liệu ggplot ví dụ):Chú thích cho geom_text với họ phông chữ biến

library(ggplot2) 
p <- ggplot(mtcars, aes(x=wt, y=mpg, label=rownames(mtcars))) 
p + geom_text(aes(family=c("serif", "mono")[am+1])) 

yielding:

enter image description here

Đó là tất cả tốt và dandy - nhưng làm thế nào để tôi có được họ phông chữ trong truyền thuyết?

+0

uh này là kỳ quặc, một người nào đó * có * đã trả lời này một vài ngày trở lại, và tôi đã chỉ là về để chấp nhận và thực hiện điều đó, nhưng bây giờ câu trả lời đã biến mất ... gì với điều đó? – maxheld

Trả lời

2

Không đẹp: Bạn có thể thay đổi họ phông chữ của nhãn chú giải ở cấp grob (tôi không biết cách nào khác, nhưng tôi mong đợi có).

Đầu tiên thêm colour vào thẩm mỹ để chú giải được tạo tự động, sau đó đặt màu theo cách thủ công, với scale_colour_manual để giữ chúng như trước. Sau đó, chỉnh sửa chi tiết chú giải, để thay đổi nhãn và phông chữ trong khóa.

library(ggplot2) 
library(grid) 



p <- ggplot(mtcars, aes(x=wt, y=mpg, colour=factor(am), label=rownames(mtcars))) + 
     geom_text(aes(family=c("serif", "mono")[am+1])) + 
     scale_colour_manual(values=c('0'= "#000000FF", '1'="#000000FF"), 
          name="am") + 
     theme(legend.text=element_text(size=16), 
       legend.key.width=unit(2, "cm")) 

g <- ggplotGrob(p) 

# change labels and fonts 
g$grobs[[8]]$grobs[[1]]$grobs[[4]]$label <- "mono" 
g$grobs[[8]]$grobs[[1]]$grobs[[4]]$gp$fontfamily <- "mono" 
g$grobs[[8]]$grobs[[1]]$grobs[[6]]$label <- "serif" 
g$grobs[[8]]$grobs[[1]]$grobs[[6]]$gp$fontfamily <- "serif" 

grid.newpage() 
grid.draw(g) 

enter image description here

Các vấn đề liên quan