R स्कैम्प्लॉट में बिंदुओं के आकार को नियंत्रित करें?


116

आर में, plot()फ़ंक्शन एक pchतर्क लेता है जो प्लॉट में बिंदुओं की उपस्थिति को नियंत्रित करता है। मैं हजारों बिंदुओं के साथ स्कैल्पलॉट बना रहा हूं और एक छोटा, लेकिन बहुत छोटा डॉट पसंद नहीं कर रहा हूं। मूल रूप से, मैं pch='.'बहुत छोटा होना चाहता हूं , लेकिन pch=19बहुत मोटा होना। वहाँ बीच में कुछ है या किसी तरह डॉट्स नीचे पैमाने पर करने के लिए कुछ है?


डॉट्स को छोटा बनाने के बजाय, क्या केवल 100 से अधिक यादृच्छिक डेटा पॉइंट्स को देखना आसान होगा, जो प्लॉट का कहना है?
user2363642

कई छोटे बिंदुओं के लिए, अल्फा (पारदर्शिता) का उपयोग करके एक प्लॉट प्लॉट को बहुत कम जानकारीपूर्ण बनाया जा सकता है, बस इसे कम करने के लिए कम अंक का उपयोग करके।

1
मेरा सुझाव है कि इसका उपयोग न करें pch='.', यह ऑफ सेंटर होगा। स्रोत: मैं pch='.'अक्सर उपयोग करता था
जीनोरमा

@geneorama क्या आप ·इसके बजाय का उपयोग कर मतलब है .?
नानकी १

@nanaki कम या ज्यादा, लेकिन अजीब तरह से अपने प्रतीक को छोटे बक्से के रूप में दिखाता है जब मैं इसे आर में उपयोग करता हूं। नीचे दिए गए उत्तर सही दृष्टिकोण को समझाने में एक अच्छा काम करते हैं।
जीनोरमा

जवाबों:


100

cexतर्क आज़माएँ :

?par

  • cex
    वह संख्यात्मक मान जो वह राशि देता है जिसके द्वारा पाठ और प्रतीकों की साजिश को डिफ़ॉल्ट के सापेक्ष बढ़ाया जाना चाहिए। ध्यान दें कि कुछ ग्राफ़िक्स फ़ंक्शन जैसे प्लॉट.डफ़ॉल्ट में इस नाम का एक तर्क होता है जो इस ग्राफ़िकल पैरामीटर को गुणा करता है, और कुछ फ़ंक्शन जैसे कि पॉइंट्स के वेक्टर को स्वीकार करते हैं जो पुनर्नवीनीकरण होते हैं। अन्य उपयोग केवल पहला मान लेंगे यदि एक से अधिक लंबाई के वेक्टर की आपूर्ति की जाती है।

15
मुझे नहीं लगता कि मैं कभी भी प्रतीक आकार को नियंत्रित करने के लिए 'cex' का उपयोग करूंगा जब तक कि मेरे पास कोई अन्य विकल्प न हो। यह केवल कुछ समय के लिए काम करता है; नियम यह है कि जब 'cex' को 'par' के माध्यम से सेट किया जाता है, तो यह प्लॉट पर (अधिकांश) टेक्स्ट के आकार को प्रभावित करता है, जब 'प्लॉट' के अंदर सेट किया जाता है, 'cex' केवल प्रतीक के आकार को प्रभावित करता है। इसलिए यदि आप उस नियम को गलत तरीके से लागू करते हैं तो न केवल आपका प्रतीक आकार बदल जाता है, बल्कि अब आपके पास पाठ आकार (cex.axis, cex.lab, cex.main, और cex.sub) को प्रभावित करने वाले कई पैरामीटर हैं - सभी एक समान हैं 'cex' के रूप में नौकरी, केवल टुकड़ा-वार)। उस तरह के कोड को बनाए रखना और विस्तारित करना मुश्किल है।
doug

5
इस बात से सहमत। फिगर मार्जिन सहित सभी प्रकार की चीजों में परिवर्तन करके cexविश्व स्तर पर स्थापित करना par, जिसके लिए आपको सही करना होगा। की स्थापना cexके भीतर plot, तथापि, काम करने लगता है।
उड़ता है

डॉउग की टिप्पणी से ऊपर दी गई सलाह जरूरी गलत नहीं है, लेकिन यह cexसाजिश रचने के तर्क का उपयोग करने के साथ किसी भी संभावित समस्याओं को काफी हद तक खत्म कर देती है। कई, कई उदाहरण हैं जहां यह उपयोगी और सबसे अच्छा विकल्प दोनों है।
जोरन

lwdनियंत्रण रेखा की चौड़ाई की चौड़ाई, उदाहरण के लिए plot(1:5, pch=1:5, col=1:5, lwd=1:5)। आपको sthda.com/english/wiki/…
जीनोरमा

95

pch = 20, "के बीच एक प्रतीक आकार देता है ।" और 19।

यह एक भरा हुआ प्रतीक है (जो शायद आप चाहते हैं)।

इसके अलावा, यहां तक ​​कि आर में बेस ग्राफिक्स सिस्टम उपयोगकर्ता को प्रतीक आकार, रंग और आकार पर ठीक-ठीक नियंत्रण देता है। उदाहरण के लिए,

dfx = data.frame(ev1=1:10, ev2=sample(10:99, 10), ev3=10:1)

with(dfx, symbols(x=ev1, y=ev2, circles=ev3, inches=1/3,
                  ann=F, bg="steelblue2", fg=NULL))

ग्राफ उदाहरण


मुझे यह साजिश पसंद है, लेकिन मैं चाहूंगा कि त्रिज्या उस बिंदु पर टिप्पणियों की संख्या के बराबर हो, क्या आप मुझे दिखा सकते हैं कि कैसे करना है?
डेरक आर्ट्स

pi*R^2(सतह) टिप्पणियों की संख्या के लिए आनुपातिक होना चाहिए।
सेसमैन

5
: @saratis यह तुम क्या चाहते हो जाएगाsymbols(x=dfx$ev1, y=dfx$ev2, circles=sqrt(dfx$ev3/pi), inches=1/3, ann=F, bg="steelblue2", fg=NULL)
fmark

1
किसी भी विचार कैसे मैं एक ही ग्राफ पर कई श्रृंखला की साजिश रचने के लिए इसका इस्तेमाल कर सकता हूं? यानी "अंक (x = dfx2 $ ev1, y = dfx2 $ ev2, मंडलियां = dfx2 $ ev3, ...)" काम नहीं करता है।
नियोडाइम

मामले में आप सोच रहे हैं "एक इंच क्या है?" यहाँ देखें
माइकल चिरिको

22

जैसा कि rcs ने कहा है, cexबेस ग्राफिक्स पैकेज में काम करेगा। मुझे लगता है कि आप अपना ग्राफ बनाने के लिए तैयार नहीं ggplot2हैं, लेकिन यदि आप करते हैं, तो एक sizeसौंदर्य विशेषता है, जिसे आप आसानी से नियंत्रित कर सकते हैं ( ggplot2उपयोगकर्ता के अनुकूल फ़ंक्शन तर्क हैं: टाइप करने के बजाय cex(चरित्र विस्तार), ggplot2आप टाइप कर सकते हैं उदा।size = 2 और आप 2 मिमी बिंदु प्राप्त करेंगे)।

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

### base graphics ###
plot(mpg ~ hp, data = mtcars, pch = 16, cex = .9)

### ggplot2 ###
# with qplot()
qplot(mpg, hp, data = mtcars, size = I(2))
# or with ggplot() + geom_point()
ggplot(mtcars, aes(mpg, hp), size = 2) + geom_point()
# or another solution:
ggplot(mtcars, aes(mpg, hp)) + geom_point(size = 2)

4
और, यदि आप वास्तव में हज़ारों अंकों की साजिश रच रहे हैं, तो ggplot2 के कई वैकल्पिक तरीके हैं जो अच्छे लगते हैं - अल्फा समायोजन, हेक्स डिब्बे, समोच्च भूखंड, आदि। Ggplot2 पुस्तक के पृष्ठ 72-77 की जाँच करें, अगर वहाँ एक है आपकी लाइब्रेरी में या यदि आपकी लाइब्रेरी में स्प्रिंगर पुस्तकों तक इलेक्ट्रॉनिक पहुंच है (मुझे लगता है कि अधिकांश आर पुस्तकें वहां हैं)।
मैट पार्कर

हाँ ... मैं विशेष रूप alphaसे स्कैल्पलॉट्स में उपयोग करता हूं , ओवरप्लोटिंग से बचने के लिए।
aL3xa

@ aL3xa आप बेस ग्राफिक्स पैकेज में अल्फा का उपयोग कर सकते हैं । उदाहरण के लिए col = rgb(0, 0, 0, 0.6)प्लॉट विकल्पों में जोड़ें ।
रोबैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.