2013-10-21 8 views
38

ggplot का उपयोग कर, मैं 21-25 के लिए shape सेट कर सकते हैं आंतरिक (fill) के लिए स्वतंत्र स्थापित करने और सीमा (col) रंग है कि आकार पाने के लिए है, तो जैसे:नियंत्रण ggplot में बिंदु सीमा मोटाई

df <- data.frame(id=runif(12), x=1:12, y=runif(12)) 
ggplot(df, aes(x=x, y=y)) + 
    geom_point(aes(fill=id, size=id), colour="black", shape=21) 

enter image description here

हालांकि, मैं यह नहीं समझ सकता कि आकार सीमाओं की मोटाई को कैसे नियंत्रित किया जाए, या तो उन्हें बिल्कुल या सौंदर्य मैपिंग के रूप में सेट किया जाए। मैं ध्यान दें कि यदि मैं एक lwd मूल्य निर्धारित करते हैं, यह ओवरराइड करता है size सौंदर्य:

ggplot(df, aes(x=x, y=y)) + 
    geom_point(aes(fill=id, size=id), colour="black", shape=21, lwd=2) 

enter image description here

मैं सीमा मोटाई कैसे नियंत्रित करूं?

उत्तर

37

ggplot2 के संस्करण 2.0.0 में प्रारंभ, बिंदु सीमा मोटाई को नियंत्रित करने के लिए एक तर्क है। NEWS.md फ़ाइल से:

geom_point() एक स्ट्रोक सौंदर्य जो आकार 21-25 (# 1133, @SeySayux) की सीमा चौड़ाई को नियंत्रित करता है लाभ। आकार और स्ट्रोक योजक हैं इसलिए आकार = 5 के साथ एक बिंदु और स्ट्रोक = 5 का व्यास 10 मिमी होगा। (# 1142)

इस प्रकार, इस के लिए सही समाधान है:

df <- data.frame(id=runif(12), x=1:12, y=runif(12)) 
ggplot(df, aes(x=x, y=y)) + 
    geom_point(aes(fill=id, size=id), colour="black", shape=21, stroke = 2) 

Output

+1

क्या आप आउटपुट जोड़ सकते हैं? – Thomas

+2

भविष्य की संगतता और स्पष्टता के लिए "नवीनतम संस्करण" की बजाय "संस्करण x.xx में शुरू करना" कहना अच्छा होगा। – Gregor

13

यह एक सा hacky लगता है लेकिन आप एक "पृष्ठभूमि" आकार सौंदर्य मानचित्रण करने के लिए सेट के साथ साथ में छोटे-मोटे निरंतर साथ डॉट्स के सेट जोड़ने डॉट्स के सीमा विस्तार कर सकते हैं। वांछित सीमा चौड़ाई पाने के लिए निरंतर के साथ खेलो।

तुम भी आकार कथा निष्क्रिय करने के लिए यह ग्राफ पर कथा प्रदर्शन को रोकने का होगा ...

ggplot(df, aes(x=x, y=y)) + 
    geom_point(aes(size=id+0.5), colour="black" , show_guide = FALSE)+ 
    scale_size(guide = "none")+ 
    geom_point(aes(fill=id, size=id), colour="black", shape=21) 

enter image description here

+2

शायद hackey, लेकिन हेडली ट्विटर पर इस विधि का समर्थन किया –

+1

@NoamRoss आप के लिए कड़ी है उस? –

+3

@ साइमन 101 https://twitter.com/hadleywickham/status/392440209922469888 –

3

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

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