2015-12-12 6 views
9

में मैंने एक ggplot फ़ंक्शन लिखने में एक ठोकर खाई है। मैं एक ggplot facet_wrap साजिश में पहलू लेबल बदलने के लिए कोशिश कर रहा हूँ .... लेकिन इसकी जटिल काम की तुलना में मैं हालांकि यह होगा साबित ....ggplot renaming facet लेबल facet_wrap

डेटा मैं उपयोग कर रहा हूँ यहाँ पहुँचा जा सकता है

str(ggdata) 
'data.frame': 72 obs. of 8 variables: 
$ Season : Factor w/ 3 levels "Autumn","Spring",..: 2 2 2 2 2 2 2 2 2 2 ... 
$ Site : Factor w/ 27 levels "Afon Cadnant",..: 13 13 13 13 13 13 13 13 13 13 ... 
$ Isotope: Factor w/ 4 levels "14CAA","14CGlu",..: 1 1 1 1 1 1 2 2 2 2 ... 
$ Time : int 0 2 5 24 48 72 0 2 5 24 ... 
$ n  : int 3 3 3 3 3 3 3 3 3 3 ... 
$ mean : num 100 88.4 80.7 40.5 27.6 ... 
$ sd  : num 0 1.74 2.85 2.58 2.55 ... 
$ se  : num 0 1 1.65 1.49 1.47 ... 

plot_func <- function(T) {site_plots <- ggplot(data = T) + geom_point(aes(Time, mean, colour = Season, shape = Season)) + 
    geom_line(aes(Time, mean, colour = Season, linetype = Season)) + 
    geom_errorbar(aes(Time, mean, ymax = (mean + se), ymin = (mean - se)), width = 2) + 
    labs(title = T$Site[1], y = "Percentage of isotope remaining in solution", x = "Time (h)") + 
    scale_x_continuous(breaks=c(0, 24, 48, 72)) + 
    scale_y_continuous(limits=c(0,115), breaks = c(0,25,50,75,100)) + 
    theme(axis.title.y = element_text(vjust = 5)) + 
    theme(axis.title.x = element_text(vjust = -5)) + theme(plot.title = element_text(vjust = -10)) + 
    theme_bw() + facet_wrap(~Isotope, ncol =2) 
    print(site_plots) 
    ggsave(plot = site_plots, filename = paste(T$Site[1], ".pdf"), 
    path = "C:/Users/afs61d/Dropbox/Academic/R/Practice datasets/Helens_data/Site_Isotope_Season_plots/", 
    width = 9, height = 7, dpi = 300)} 

इस सुंदर ग्राफ में परिणामी:

मैं ggplot जो पहलुओं लेबल करने के लिए आइसोटोप कारक स्तरों का उपयोग करता बनाने के लिए निम्नलिखित समारोह में लिखा है

जो अच्छा है, लेकिन मैं अब पहलू लेबल बदलना चाहते हैं ... गूगल के आसपास कुछ poking किया करने के बाद मैंने सोचा कि मैं एक तर्क के रूप labeller समारोह का उपयोग करने के facet_wrap को पारित करने में सक्षम हो सकता है। एक निराशाजनक घंटे के बाद मुझे पता चला कि यह केवल facet_grid के साथ काम करता है !!! ??? तो, एक वैकल्पिक पद्धति फैक्टर स्तर नाम बदलने के लिए तो मेरे पहलू लेबल है कि मैं चाहता हूँ ::

gdata$Isotope <- revalue(x = ggdata$Isotope, 
c("14CAA" = " 14C Amino Acids", "14CGlu" = "14C Glucose", 
    "14cGlu6P" = "14C Glucose-6-phosphate", "33P" = "33P Phosphate")) 

यह काम करता है देना था, लेकिन समस्या मैं अब है कि मैं करने के लिए लेबल में संख्या चाहते है सुपर लिपिड हो। क्या कोई इसे हासिल करने का सबसे अच्छा तरीका सुझा सकता है? धन्यवाद

+0

मुझे लगता है कि "labeller" ggplot के विकास संस्करण में facet_wrap के लिए उपलब्ध है: http://docs.ggplot2.org/dev/facet_wrap.html –

+0

@BenBolker धन्यवाद ... कि बहुत होगा उपयोगी - मैं इसे कैसे स्थापित कर सकता हूं? –

+0

@ eipi10 मुझे नहीं लगता कि 'प्रयोगशाला' को 'facet_wrap' में पारित किया जा सकता है ... जो समस्या का क्रूक्स है –

उत्तर

3

यह सुलझाने के लिए प्रबंधित करें! ggplot के विकास संस्करण को स्थापित करने में परेशानी थी, लेकिन curl और devtools इंस्टॉल करने और scales को पुनर्स्थापित करने के बाद यह काम करता था। मैं @ eipi10 जवाब करने की कोशिश की लेकिन ऐसा काम करने के लिए नहीं मिल सका मैं एक अलग तरीके से कारक लेबल का नाम बदल दिया है:

plot_func <- function(T) {site_plots <- ggplot(data = T) + geom_point(aes(Time, mean, colour = Season, shape = Season)) + 
    geom_line(aes(Time, mean, colour = Season, linetype = Season)) + 
    geom_errorbar(aes(Time, mean, ymax = (mean + se), ymin = (mean - se)), width = 2) + 
    labs(title = T$Site[1], y = "Percentage of isotope remaining in solution", x = "Time (h)") + 
    scale_x_continuous(breaks=c(0, 24, 48, 72)) + 
    scale_y_continuous(limits=c(0,115), breaks = c(0,25,50,75,100)) + 
    theme(axis.title.y = element_text(vjust = 5)) + 
    theme(axis.title.x = element_text(vjust = -5)) + theme(plot.title = element_text(vjust = -10)) + 
    theme_bw() + facet_wrap(~Isotope, ncol =2, labeller = label_parsed) 
    print(site_plots) 
    ggsave(plot = site_plots, filename = paste(T$Site[1], ".pdf"), 
    path = "C:/Users/afs61d/Dropbox/Academic/R/Practice datasets/Helens_data/Site_Isotope_Season_plots/", 
    width = 9, height = 7, dpi = 300)} 
:

ggdata$Isotope <- factor(ggdata$Isotope, labels = c("NULL^14*C~Amino~Acids", 
"NULL^14*C~Glucose", "NULL^14*C~Glucose-6-phosphate", "NULL^33*P~Phosphate")) 

मैं तो facet_wrap कार्य करने के लिए labeller = label_parsed पारित करने के लिए ggplot समारोह समायोजित

ggdata को plot_func पर पास करने से मुझे सही पहलू लेबल के साथ नीचे दिए गए ग्राफ मिलते हैं।

enter image description here

6

सेट उचित भाव के पहलू लेबल, तो labeller समारोह label_parsed का उपयोग सुनिश्चित करने के लिए कि वे ठीक से प्रदर्शित होते हैं। यहाँ एक उदाहरण है, निर्मित iris डेटा फ्रेम का उपयोग कर:

data(iris) 
iris$Species = as.character(iris$Species) 
iris$Species[iris$Species == "virginica"] = "NULL^14*C~Amino~Acids" 

ggplot(iris, aes(Sepal.Width, Sepal.Length)) + 
    geom_point() + 
    facet_wrap(~ Species, labeller=label_parsed) 

आप ^14*C से पहले NULL जोड़ने की जरूरत है या आप की वजह से प्रारंभिक चरित्र के रूप में ^ होने के लिए एक त्रुटि मिल जाएगा। * और ~ अभिव्यक्ति के प्रत्येक भाग की सीमाओं को चिह्नित करता है, इस पर निर्भर करता है कि आप प्रत्येक भाग के बीच कोई स्थान नहीं चाहते हैं या नहीं।

इस लेखन के अनुसार (12 दिसंबर, 2015), facet_wrap के साथ काम करने के लिए आपको ggplot2 के विकास संस्करण का उपयोग करने की आवश्यकता है। हालांकि, इस सुविधा को जल्द ही पैकेज की नियमित रिलीज में शामिल किया जाएगा।

enter image description here

+1

"न्यूल" के साथ साफ चाल। लेकिन ओपी का सवाल 'facet_wrap' था, 'facet_grid' नहीं। – Matt74

+0

@ eipi10 धन्यवाद लेकिन यह 'facet_wrap' के साथ काम नहीं करेगा ... –

+2

पर कार्रवाई में' label_parsed' देखने के लिए उपयोगी है, हालांकि मैंने 'facet_wrap' का उपयोग करने के लिए अद्यतन किया है, जो भी काम करता है। मैं ggplot ('ggplot2_1.0.1.9003') के विकास संस्करण का उपयोग कर रहा हूं। शायद यह नवीनतम सीआरएएन रिलीज में काम नहीं करता है? – eipi10

संबंधित मुद्दे