2011-09-26 23 views
8

पर अंक के क्रम को बदलने के बिना पुनर्जन्म की किंवदंती मैं ggplot2 में इस समस्या में चल रहा हूं, शायद कोई मेरी मदद कर सकता है।साजिश

मेरे पास एक साजिश है जहां पौराणिक कथाओं में चर के क्रम को क्रमिक क्रम में प्रदर्शित किया जाता है कि वे साजिश पर कैसे प्रदर्शित होते हैं।

उदाहरण के लिए:

df=data.frame(
mean=runif(9,2,3), 
Cat1=rep(c("A","B","C"),3), 
Cat2=rep(c("X","Y","Z"),each=3)) 

dodge=position_dodge(width=1) 
ggplot(df,aes(x=Cat1,y=mean,color=Cat2))+ 
geom_point(aes(shape=Cat2),size=4,position=dodge)+ 
scale_color_manual(values=c("red","blue","black"))+ 
scale_shape_manual(values=c(16:19))+ 
coord_flip() 

पैदा करता है:

example

तो अंक के रूप में Cat2 = जेड, वाई, तो एक्स (काले हीरे, नीला त्रिकोण, लाल भूखंड पर प्रदर्शित किए जाते हैं सर्कल) लेकिन पौराणिक कथाओं में उन्हें Cat2 = X, Y, फिर Z (लाल सर्कल, नीला त्रिभुज, काला हीरा) के रूप में प्रदर्शित किया जाता है।

मैं साजिश पर बिंदुओं को स्थानांतरित किए बिना किंवदंती के आदेश को कैसे उलट सकता हूं? कारक को पुन: व्यवस्थित करने से विपरीत समस्या उत्पन्न होती है (साजिश पर अंक उलट दिए जाते हैं)।

धन्यवाद!

+2

अभी के लिए, शायद कोई आसान तरीका नहीं है। हालांकि, अगले संस्करण में किंवदंती आदेश को उलट करने का विकल्प हो सकता है। – kohske

+0

हम्म, जो बदबू आ रही है। जानकार अच्छा लगा। सर उठाने के लिए धन्यवाद! – jslefche

+1

स्केल 'ब्रेक' सेट करें। – hadley

उत्तर

0

जहां तक ​​मैं समझता हूँ कि आप क्या हासिल करना चाहते हैं, इस सरल हेरफेर मेरे लिए काम कर देता है:

  1. और
  2. chage (पर्याप्त क्रम में स्तर के साथ) एक कारक के रूप में एक Cat2 को परिभाषित

    library(ggplot2) 
    
    df=data.frame(
        mean=runif(9,2,3), 
        Cat1=rep(c("A","B","C"),3), 
        Cat2=factor(rep(c("X","Y","Z"),each=3), levels=c('Z', 'Y', 'X'))) 
    
    dodge=position_dodge(width=1) 
    ggplot(df,aes(x=Cat1,y=mean,color=Cat2))+ 
        geom_point(aes(shape=Cat2),size=4,position=dodge)+ 
        scale_color_manual(values=c("black","blue","red"))+ 
        scale_shape_manual(values=c(18:16))+ 
        coord_flip() 
    
    : स्तरों के क्रम मैच के लिए (scale_manual आदेशों में) रंग और आकार के आदेश

यहाँ यह करने के लिए कोड है

+0

हां, जैसा कि मैंने अपने प्रश्न के अंत में दफनाया था, कारक को उलटकर पौराणिक कथाओं को उलट देता है लेकिन साजिश पर बिंदुओं को भी उलट देता है (लाल सर्कल अब पहले है)। मैं साजिश पर अंक के क्रम को संरक्षित करना चाहता हूं लेकिन किंवदंती को उलट देता हूं। मैंने आपके समाधान का उपयोग किया था और पौराणिक कथाओं को पहली साजिश पर कॉपी किया था। सुरुचिपूर्ण, लेकिन यह करना होगा। अंतर्दृष्टि के लिए धन्यवाद सब एक ही! – jslefche

3

हैडली की टिप्पणी बाहर मांस के लिए, हम कुछ इस तरह करना होगा:

ggplot(df,aes(x=Cat1,y=mean,color=Cat2))+ 
geom_point(aes(shape=Cat2),size=4,position=dodge)+ 
scale_color_manual(values=c("red","blue","black"),breaks = c('Z','Y','X'))+ 
scale_shape_manual(values=c(16:19),breaks = c('Z','Y','X'))+ 
coord_flip() 

enter image description here

ध्यान दें कि हम दोनों तराजू में विराम सेट करने के लिए किया था। अगर हमने केवल एक किया, तो वे मेल नहीं खाएंगे, और ggplot उन्हें विलय करने के बजाए दो किंवदंतियों में विभाजित करेगा।

+0

यदि आपके पास कई मैन्युअल स्केल हैं, उदा। 'scale_fill_manual',' scale_color_manual' और 'scale_shape_manual' और आप लेबल बदलना चाहते हैं, आपको उन सभी को एक ही लेबल की आपूर्ति करने की आवश्यकता है, जो थकाऊ हो सकता है (कहें कि आपके पास 6 लंबे स्पष्टीकरण लेबल वाले 6 चर हैं)। कोई दूसरा रास्ता नहीं है, है ना? – PatrickT

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