2012-07-09 23 views
53

नियंत्रित करना क्या कोई जानता है कि मैं ggplot2 में किंवदंतियों के क्रम का नियंत्रण कैसे प्राप्त कर सकता हूं?ggplot2 किंवदंती प्रदर्शन आदेश

मैं क्या देख सकता हूं कि आदेश पैमाने घोषणापत्र आदेश के बजाय वास्तविक पैमाने लेबल से संबंधित प्रतीत होता है। स्केल टाइटल बदलना ऑर्डरिंग बदलता है। मैंने इसे हाइलाइट करने के लिए डायमंड डेटासेट का उपयोग करके एक छोटा सा उदाहरण बनाया है। मैं भूखंडों की एक श्रृंखला के लिए ggplot2 का उपयोग करने की कोशिश कर रहा हूं और मैं उन सभी में एक वैरिएबल दिखाना चाहता हूं। वर्तमान में यह केवल उनमें से कुछ में होता है, और उचित पैमाने पर लेबल बनाए रखने के दौरान मुझे वांछित क्रम को लागू करने के तरीके पर नुकसान होता है।

library(ggplot2) 
diamond.data <- diamonds[sample(nrow(diamonds), 1000), ] 
plot <- ggplot(diamond.data, aes(carat, price, colour = clarity, shape = cut)) + 
    geom_point() + opts(legend.position = "top", legend.box = "horizontal") 
plot # the legend will appear shape then colour 
plot + labs(colour = "A", shape = "B") # legend will be colour then shape 
plot + labs(colour = "Clarity", shape = "Cut") # legend will be shape then colour 
+2

संबंधित (हालांकि इस सवाल का एक बेहतर समाधान है): http://stackoverflow.com/questions/10035551/ऑर्डरिंग-ऑफ-बहु-किंवदंतियों-मार्गदर्शिका-क्या-स्वचालित-तर्क-कैसे-बदलने के लिए –

उत्तर

87

0.9.1 में, किंवदंतियों के क्रम निर्धारित करने के लिए नियम गुप्त और अप्रत्याशित है। अब, 0.9.2 में, जिथब में देव संस्करण, आप किंवदंती के क्रम को सेट करने के लिए पैरामीटर का उपयोग कर सकते हैं।

यहाँ उदाहरण है:

plot <- ggplot(diamond.data, aes(carat, price, colour = clarity, shape = cut)) + 
    geom_point() + opts(legend.position = "top") 

plot + guides(colour = guide_legend(order = 1), 
       shape = guide_legend(order = 2)) 

enter image description here

plot + guides(colour = guide_legend(order = 2), 
       shape = guide_legend(order = 1)) 

enter image description here

12

ऐसा लगता है कि किंवदंती का क्रम स्केल नामों में वर्णों की संख्या द्वारा निर्धारित किया जाता है। रिक्त स्थान के साथ (हाँ, मैं मानता हूँ, कि विचित्र लगता है।)

तो, एक समाधान के पैड करने के लिए है अपने लेबल:

plot + labs(colour = "Clarity", shape = "  Cut") 

enter image description here


मैं ईमानदारी से आशा है कि किसी को एक उचित समाधान पोस्ट शीघ्र!

+0

मुझे स्पष्टता मिलती है तो मेरी किंवदंती में कटौती (रिक्त स्थान के साथ गद्देदार) अगर मैं करता हूं तुमने किया पैकेज डिस्क्रिप्शन ("ggplot2") $ संस्करण = 0.9.1 – Spacedman

+0

मुझे यह स्पष्ट करना चाहिए था कि मैं वास्तव में रंग चाहता हूं तो आकार (यानी क्लेरिटी फिर कट), तो कटौती न करें, उदाहरण के समान स्पष्टता। हालांकि, मैं कुछ भी पैमाने का नाम देने में सक्षम होना चाहता हूं और अभी भी यह आदेश है। – Alastair

+4

@Alastair यह अब स्पष्ट है कि मेरा कामकाज केवल 'ggplot2' संस्करण 0.9.0 में काम करेगा - यह वर्कअराउंड अब संस्करण 0.9.1 में काम नहीं करता है। इसलिए, यदि आप अभी भी 0.9.0 का उपयोग कर रहे हैं तो आप वांछित क्रम प्राप्त करने के लिए रिक्त स्थान के साथ तारों को पैड कर सकते हैं। जैसा कि मैंने कहा, यह केवल एक कामकाज है (और एक सीमित शेल्फ जीवन के साथ)। – Andrie

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