2015-09-19 10 views
7

मैं ggplot2 पहलू लेबल में R expression रखना चाहता हूं।ggplot2 facet लेबल में अभिव्यक्ति

मान लीजिए कि मैं साजिश रचने कर रहा हूँ चलो 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 

इस प्रकार है:

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

इसके बजाय पहलू लेबल के रूप में होने के "महिला" और "पुरुष" की

मैं चाहते हैं: "महिला विषयों" और "पुरुष विषयों "क्रमशः। जहां तक ​​मुझे पता है कि आर में एक लेबल को इटैलिकिस करना expression फ़ंक्शन के माध्यम से हासिल किया गया है, लेकिन मुझे नहीं पता कि facet_wrap के साथ इसे कैसे जोड़ा जाए।

+0

आप एक कस्टम समारोह इस्तेमाल कर सकते हैं, तो आप labeller तर्क के साथ उपयोग कर सकते हैं, [यहां] को देखने के (http://stackoverflow.com/प्रश्न/30923852/शामिल-टी-कैरेक्टर-इन-फेस-स्ट्रिप-टेक्स्ट-साथ-कस्टम-लैबेलर) – RHA

+0

यह स्पष्ट नहीं है कि आप अभिव्यक्ति के साथ कारक को प्रतिस्थापित करने के लिए facet_grid के प्रयोगशाला तर्क कैसे प्राप्त करते हैं और पहलू रखते हैं शीर्ष पर लेबल के साथ पंक्तियों में, जैसा कि मेरा उदाहरण (पंक्तियों के लिए facet_grid लेबल के रूप में पक्ष के बजाय)। – user1701545

+0

क्या आपने इस विषय को देखा? यह http://stackoverflow.com/questions/20037843/how-to-use-italics-for-facet-labels-in-ggplot2 – Boidot

उत्तर

4

अत्यधिक जटिल लग रहा है, लेकिन काम करता है। हालांकि आपको 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

मुझे पता था कि इसे एक समारोह होना था लेकिन यह काम नहीं कर सका। किसी भी विचार पर यह facet_wrap के साथ क्यों काम नहीं करता है? – RHA

+0

@RHA 'facet_wrap' कस्टम लेबलर्स का समर्थन नहीं करता है (मुझे नहीं पता क्यों), लेकिन दिखाए गए निम्न स्तर के वर्कअराउंड हैं [यहां] (http://stackoverflow.com/questions/19282897/how- टू-एड-भाव करने वाली लेबल-इन-पहलू-चादर)। – tonytonov

3

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)) 
संबंधित मुद्दे