2012-02-21 14 views
6

के लिए दो प्रतीकों को दिखाएं pch का उपयोग करके मैं किसी भी प्रतीक को साजिश कर सकता हूं और किंवदंती में किसी भी लेबल को असाइन कर सकता हूं। लेकिन मैं प्रत्येक किंवदंती लेबल के लिए दो प्रतीकों को कैसे प्लॉट कर सकता हूं? उदाहरण के लिए, नीचे की साजिश में, मुझे ■ ▲ ● उन लोगों के लाल संस्करणों के साथ जोड़ा जाना चाहिए, इसलिए मेरे पास छः प्रतीकों के लिए किंवदंती में प्रदर्शित केवल तीन लेबल 'ए', 'बी', 'सी' है। फिलहाल, ऐसा लगता है कि मूल कथानक कथा मुझे केवल हर लेबल के लिए एक प्रतीक प्लॉट करने के लिए अनुमति देता है:प्रत्येक किंवदंती लेबल

plot(rnorm(50),pch=c(15:17),col=1:2) 
legend('topleft',pch=c(15:17),col=1:2,legend=c("a","b","c"),cex=1.5) 

enter image description here

+0

क्या आप 'अंक()' और 'पाठ()' के संयोजन के साथ एक पौराणिक कथा अपने आप का निर्माण करने से रोकने के? (या यह एक 'स्वीकार्य' समाधान होगा?) एक और विचार 'ggplot2' को 'पृथक' और 'रंग' पैमाने के साथ उपयोग करना होगा। – chl

+1

@chl: आपका पहला बिंदु - मैंने सोचा कि अधिक मजबूत/स्वचालित समाधान संभव होगा। आपका दूसरा बिंदु - मैं ईमानदारी से ggplot2 को नापसंद करता हूं, क्योंकि यह डिफ़ॉल्ट रूप से अधिक चार्टजंक में जोड़ता है, इसलिए मैं इससे बचता हूं। शायद आपके पास जाली/ग्रिड के लिए समान विचार है? –

+0

हम्म। मुझे आश्चर्य है कि ggplot2 विषयों को आपको खुश करने के लिए tweaked किया जा सकता है। पृष्ठभूमि और ग्रिड लाइनों के अलावा आप चार्टजंकी पर क्या विचार करते हैं? हालांकि मुझे लगता है कि नीचे @ जोश ओ'ब्रायन द्वारा प्रदान किया गया जाली समाधान आपको अच्छी तरह से अनुकूल होना चाहिए। –

उत्तर

8

यह lattice साथ भी कठिन नहीं है, जैसा कि इसके key = तर्क एक मनमाना संख्या लेता है पौराणिक कथाओं में शामिल किए जाने वाले स्तंभों का।

library(lattice) 

myPCH <- 15:17 
Data <- rnorm(50) 
Index <- seq(length(Data)) 

xyplot(Data ~ Index, 
     pch = myPCH, col=1:2, 
     key = list(space = "right", adj=1, 
        text = list(c("a", "b", "c"), cex=1.5), 
        points = list(pch = myPCH), 
        points = list(pch = myPCH,col=2))) 

मैं अपने सिर कैसे साजिश क्षेत्र के अंदर कथा शामिल करने के लिए के ऊपर से पता नहीं है, लेकिन साजिश के इस प्रकार के साथ वैसे भी यह बाहर है करने के लिए बेहतर लगता है। (संपादित करें: टिप्पणी में @chl कृपया तरीके यह करने के लिए की एक जोड़ी बताते हैं उदाहरण के लिए में आंकड़ा में नीचे बाईं ओर कुंजी प्लॉट करने के लिए, या तो corner = c(0,0) या x = 0, y=0.2 के साथ ऊपर में space = "right" बदलें।)

enter image description here

+0

हां, धन्यवाद @ जोश (फिर से)!मुझे जाली का पता लगाने की जरूरत है। आपने मेरी दूसरी समस्या भी हल की है जो फ़ॉन्ट के आकार को बदलने के बिना किंवदंती प्रतीकों के आकार को बदल रहा है :-) –

+0

मीठा। आप की तरह, किसी भी कारण से, मैं जाली के ग्राफिकल डिफॉल्ट के क्लीनर लुक को भी पसंद करता हूं (हालांकि मुझे यकीन है कि उनको आसानी से ट्विक किया जा सकता है)। जीजीप्लॉट के पक्ष में, इसे एसओ पर अधिक सहज ज्ञान युक्त सिंटैक्स, एक बड़ा प्रशंसक (और इस प्रकार समर्थन) आधार मिला है, और यह अधिक सक्रिय विकास के तहत प्रतीत होता है। मुझे लगता है कि मैं इन दिनों में से एक डुबकी लेना समाप्त कर सकता हूं ... –

+0

(+1) अच्छी प्रतिक्रिया। (बीटीडब्ल्यू, आप 'कोने' या 'x =, y =' का उपयोग करके किंवदंती स्थान को बदल सकते हैं, उदाहरण के लिए, 'कुंजी = सूची (x = .1, y = .9, adj = 1, ...' पौराणिक कथाओं को रखेगी साजिश क्षेत्र के अंदर।) – chl

5

जैसे कि सीएल ने बताया, एक अनुकूलित किंवदंती बनाना भी संभव है। समारोह 'किंवदंती' अदृश्य रूप से किंवदंती बॉक्स की सीमाओं के साथ-साथ किंवदंती पाठ के निर्देशांक देता है। कोई प्रतीक के बिना पौराणिक पाठ को साजिश कर सकता है, और फिर प्रतीकों को मैन्युअल रूप से 'पॉइंट' के साथ वापस निर्देशांक में जोड़ सकता है। यह किसी भी अतिरिक्त ग्राफिक्स पैकेज की आवश्यकता नहीं होगी:

plot(rnorm(50), pch=c(15:17), col=1:2) 
# Plot legend text, inset could be used to shift legend text to the right 
pos <- legend('topleft', legend=c("a","b","c"), cex=1.5) 
# Plot symbols in two columns, shifted to the left by 3 and 1 respectively 
points(x=rep(pos$text$x, times=2) - c(3,1), 
    y=rep(pos$text$y, times=2), 
    pch=rep(c(15:17), times=2), col=rep(1:2, times=3)) 

The image produced by the code

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