एक ggplot में कुछ किंवदंतियों को बंद करना


221

मान लीजिए कि मेरे पास एक से अधिक किंवदंती के साथ एक ggplot है।

mov <- subset(movies, length != "")
(p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()
)

मैं इस तरह से सभी किंवदंतियों के प्रदर्शन को बंद कर सकता हूं:

(p1 <- p0 + theme(legend.position = "none"))

पास show_guide = FALSEकरना geom_point( इस प्रश्न के अनुसार ) आकार की किंवदंती को बंद कर देता है।

(p2 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point(show_guide = FALSE)
)

लेकिन क्या होगा अगर मैं इसके बजाय रंग किंवदंती को बंद करना चाहता हूं? यह बताने का कोई तरीका नहीं है कि show_guideकिस किंवदंती को अपना व्यवहार लागू करना है। और show_guideतराजू या सौंदर्यशास्त्र के लिए कोई तर्क नहीं है।

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  scale_colour_discrete(show_guide = FALSE) +
  geom_point()
)
# Error in discrete_scale

(p4 <- ggplot(mov, aes(year, rating, shape = mpaa)) +
  aes(colour = length, show_guide = FALSE) +
  geom_point()
)
#draws both legends

यह प्रश्न बताता है कि किंवदंतियों को नियंत्रित करने का आधुनिक (ggplot2 v0.9.2) तरीका guidesफ़ंक्शन के साथ है ।

मैं ऐसा कुछ करने में सक्षम होना चाहता हूं

p0 + guides(
  colour = guide_legend(show = FALSE) 
)

लेकिन guide_legendएक शो तर्क नहीं है।

मैं यह कैसे निर्दिष्ट करूँ कि कौन से किंवदंतियाँ प्रदर्शित हैं?


6
हाल ही में एक ggplot2अद्यतन के बाद , show_guideहटा दिया गया है और इसके द्वारा प्रतिस्थापित किया गया है show.legend
PatrickT

जवाबों:


294

आप उपयोग कर सकते हैं guide=FALSEमें scale_..._...()दबाने पौराणिक कथा के।

अपने उदाहरण के लिए आपको उपयोग करना चाहिए scale_colour_continuous()क्योंकि lengthनिरंतर चर (असतत नहीं है)।

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
   scale_colour_continuous(guide = FALSE) +
   geom_point()
)

या फंक्शन का उपयोग करके guides()आप स्थापित करना चाहिए FALSE/ उस तत्व के लिए सौंदर्य है कि आप कथा के रूप में प्रकट करने के लिए नहीं करना चाहते हैं, उदाहरण के लिए, fill, shape, colour

p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()    
p0+guides(colour=FALSE)

अपडेट करें

दोनों ने नए ggplot2संस्करण 2.0.0 में समाधान प्रदान किए लेकिन moviesडेटासेट अब इस लाइब्रेरी में मौजूद नहीं है। इसके बजाय आपको ggplot2moviesउन समाधानों की जांच करने के लिए नए पैकेज का उपयोग करना होगा।

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")

6
स्केल_कोल_कंटिन्यूअस (गाइड = FALSE) ggplot2 0.9.3 में काम नहीं करता है, लेकिन गाइड (रंग = FALSE) समस्या को हल करता है। बहुत बहुत धन्यवाद Didzis!
निकोले नेनोव

1
@NikolayNenov अजीब, क्योंकि दोनों समाधान मेरे लिए ggplot2 0.9.3.1 के साथ काम करता है
डिडिस

9
मैं अल्फा के लीजेंड को हटाना चाहता हूं । guides(alpha=FALSE)चाल चलो। धन्यवाद, डिडिज़।
l0o0

3
स्वयं पर ध्यान दें: यदि आपके पास एक है geom_linerange()और किंवदंती एक पंक्ति के बजाय एक क्रॉस दिखा रही है, तो show.legend=FALSEअंदर डालें geom_linerange()
पैट्रिक टीटी

25

आप बस show.legend=FALSEइसी किंवदंती को दबाने के लिए जियोम को जोड़ सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.