2011-03-30 15 views
32

हाय मैं आर में ggplot का उपयोग कर एक पहलू साजिश साजिश रची का क्रम बदलने और यहाँ कैसे साजिश हैggplot में पहलू लेबल (कस्टम पहलू रैप लेबल)

http://i.stack.imgur.com/5qXF1.png

समस्या मेरे पास है, है पहलुओं (लेबल) को वर्णानुक्रम में क्रमबद्ध किया जाता है (पूर्व: ई 1, ई 10, ई 11, ई 13, ई 2, ई 3, आई 1, आई 10, आई 2) लेकिन मुझे उन्हें ई 1, आई 1, ई 2, आई 2, ई 3, ई 10 जैसे कस्टम ऑर्डर होने की आवश्यकता है, आई 10, ई 11, ई 13।

मैं यह कैसे कर सकता हूं?

+5

अंतर्निहित कारक के क्रम का पुनर्व्यवस्थित करें। आप 'रिलीज़() 'या' रीडर() 'का उपयोग कर सकते हैं या कस्टम ऑर्डर कर सकते हैं और' कारक()' का उपयोग कर सकते हैं। – Chase

उत्तर

40

ggplot द्वारा factor() या आंतरिक द्वारा लगाए गए स्तरों के डिफ़ॉल्ट अनुक्रम पर निर्भर करता है, तो समूहीकरण चर आपूर्ति नहीं एक कारक है मत करो। स्तर को स्पष्ट रूप से सेट करें।

dat <- data.frame(x = runif(100), y = runif(100), 
        Group = gl(5, 20, labels = LETTERS[1:5])) 
head(dat) 
with(dat, levels(Group)) 

क्या होगा अगर मैं उन्हें इस मनमाना क्रम में चाहता हूं?

set.seed(1) 
with(dat, sample(levels(Group))) 

ऐसा करने के लिए, स्तरों को जिस तरह से आप चाहते हैं उसे सेट करें।

require(ggplot2) 
p <- ggplot(dat, aes(x = x)) + geom_bar() 
p + facet_wrap(~ Group) 

कौन सा पैदा करता है:

set.seed(1) # reset the seed so I get the random order form above 
dat <- within(dat, Group <- factor(Group, levels = sample(levels(Group)))) 
with(dat, levels(Group)) 

अब हम पैनलों के क्रम में तैयार हम अभाव है करने के लिए इसका उपयोग कर सकते

facets wrapped

+1

बहुत बहुत धन्यवाद :) – Jana

0

बस एक समान पर काम किया जा रहा है मुसीबत।

[1] "A1" "A10" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9" 
[11] "B1" "B2" "B3" "B4" "B5" "B6" "B7" "B8" "B9" 

ध्यान दें कि दूसरे स्तर वर्णमाला के क्रम के कारण जगह से बाहर है: मैं स्तरों जो डिफ़ॉल्ट रूप से इस तरह दिखना है।

reorder(factor(fct), 
     fct %>% 
      str_replace("([[:alpha:]]+)", "\\1|") %>% 
      str_split("\\|") %>% 
      sapply(function(d) sprintf("%s%02d", d[1], as.integer(d[2]))), 
     function(x) x[1]) 

यह "A01" "A1" की तरह का स्तर बदल देता है तो इन के अनुसार reorders:

यह है कि मैं क्या आदेश ठीक करने के लिए कर रहा हूँ है। मुझे यकीन है कि आप इसे और अधिक कुशलता से कर सकते हैं, लेकिन यह नौकरी करता है।

इसे मूल समस्या का समाधान करने के लिए अनुकूलित किया जा सकता है।

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