2015-09-19 25 views
7

Tôi muốn có một nhãn R expression trong nhãn ggplot2.Biểu thức trong nhãn các nhãn ggplot2

Hãy nói rằng tôi đang âm mưu thực hiện tipsdata.frame:

library(reshape2) 
> head(tips) 
    total_bill tip sex smoker day time size 
1  16.99 1.01 Female  No Sun Dinner 2 
2  10.34 1.66 Male  No Sun Dinner 3 
3  21.01 3.50 Male  No Sun Dinner 3 
4  23.68 3.31 Male  No Sun Dinner 2 
5  24.59 3.61 Female  No Sun Dinner 4 
6  25.29 4.71 Male  No Sun Dinner 4 

như sau:

library(ggplot2) 
sp <- ggplot(tips, aes(x=total_bill, y=tip/total_bill)) + 
     geom_point(shape=1) + 
     facet_wrap(~sex, ncol = 1) 

enter image description here

Thay vì phải "Nữ" và "Nam" như nhãn khía cạnh tôi muốn có: "Nữ chủ đề" và "Nam đối tượng ", tương ứng. Theo như tôi biết italicizing một nhãn trong R đạt được thông qua các chức năng expression, nhưng tôi không biết làm thế nào để kết hợp với facet_wrap.

+0

Bạn có thể sử dụng một chức năng tùy chỉnh, bạn có thể sử dụng với đối số -máy dán nhãn, xem [ở đây] (http://stackoverflow.com Câu hỏi/30923852/include-t-character-in-facet-strip-text-với-custom-labeller) – RHA

+0

Nó không rõ ràng với tôi làm thế nào bạn có được đối số labeller của facet_grid để thay thế các yếu tố với một biểu thức và có các khía cạnh trong các hàng có các nhãn ở trên cùng, như trong ví dụ của tôi (thay vì ở bên cạnh như trong nhãn facet_grid cho các hàng). – user1701545

+0

Bạn đã kiểm tra chủ đề này chưa? Nó có thể giúp http://stackoverflow.com/questions/20037843/how-to-use-italics-for-facet-labels-in-ggplot2 – Boidot

Trả lời

4

Trông quá phức tạp, nhưng hoạt động. Bạn sẽ phải sử dụng facet_grid.

make_label <- function(value) { 
    x <- as.character(value) 
    bquote(italic(.(x))~subjects) 
} 

plot_labeller <- function(variable, value) { 
    do.call(expression, lapply(levels(value), make_label)) 
} 

ggplot(tips, aes(x=total_bill, y=tip/total_bill)) + 
    geom_point(shape=1) + 
    facet_grid(.~sex, labeller = plot_labeller) 

enter image description here

+0

Tôi biết nó phải là một chức năng nhưng không thể làm cho nó hoạt động. Bất kỳ suy nghĩ về lý do tại sao điều này không làm việc với facet_wrap? – RHA

+0

@RHA 'facet_wrap' không hỗ trợ các labeller tùy chỉnh như (tôi không biết tại sao), nhưng có một cách giải quyết mức thấp như được hiển thị [ở đây] (http://stackoverflow.com/questions/19282897/how- thêm biểu thức-to-nhãn-in-facet-wrap). – tonytonov

3

Tính đến ggplot22.1.0:

data(tips, package="reshape2") 
library(ggplot2) 
ggplot(tips, aes(x=total_bill, y=tip/total_bill)) + 
    geom_point(shape=1) + 
    facet_wrap(~sex, ncol=1, 
      labeller=label_bquote(.(levels(tips$sex)[sex])~subjects)) 
Các vấn đề liên quan