एक बहुत ही सरल उदाहरण लें, mfrow=c(1,3)
; प्रत्येक आकृति एक अलग हिस्टोग्राम है; मैं एक क्षैतिज रेखा कैसे खींचूंगा (abline(h=10)
के समान) जो पर सभी 3 आंकड़े गए? (यानी, उनके बीच मार्जिन भी है।) जाहिर है, मैं प्रत्येक आकृति में एक अपरिपक्व जोड़ सकता हूं, लेकिन यह वही नहीं है जो मैं चाहता हूं। मैं वास्तव में द्वारा polygon
आदि का उपयोग करके प्रत्येक 'आकृति' को चित्रित करने के लिए एक बहुत ही जटिल तरीका के बारे में सोच सकता हूं। यह हास्यास्पद होगा। क्या ऐसा करने का कोई आसान तरीका नहीं है?आप आर में एक बहु-आंकड़े वातावरण में एक रेखा कैसे आकर्षित करते हैं?
उत्तर
@joran के रूप में बताया गया है, ग्रिड चित्रमय प्रणाली और अधिक लचीला प्रदान करता है एक ही डिवाइस पर एकाधिक भूखंडों की व्यवस्था पर नियंत्रण।
यहाँ, मैं पहले grconvertY()
का उपयोग "सामान्यीकृत डिवाइस निर्देशांक" की इकाइयों में 50 y- अक्ष पर की ऊंचाई के स्थान क्वेरी करने के लिए। (यानी 0 = नीचे, और 1 = शीर्ष के साथ, प्लॉटिंग डिवाइस की कुल ऊंचाई के अनुपात के रूप में)। मैं फिर ग्रिड फ़ंक्शंस का उपयोग करता हूं: (1) viewport
दबाएं जो डिवाइस को भरता है; और (2) grconvertY()
द्वारा लौटाई गई ऊंचाई पर एक रेखा प्लॉट करें।
## Create three example plots
par(mfrow=c(1,3))
barplot(VADeaths, border = "dark blue")
barplot(VADeaths, border = "yellow")
barplot(VADeaths, border = "green")
## From third plot, get the "normalized device coordinates" of
## a point at a height of 50 on the y-axis.
(Y <- grconvertY(50, "user", "ndc"))
# [1] 0.314248
## Add the horizontal line using grid
library(grid)
pushViewport(viewport())
grid.lines(x = c(0,1), y = Y, gp = gpar(col = "red"))
popViewport()
संपादित: @joran एक लाइन है कि 3 साजिश में पिछले बार के किनारे करने के लिए 1 भूखंड के y- अक्ष से फैली प्लॉट करने के लिए कैसे पूछा।
library(grid)
library(gridBase)
par(mfrow=c(1,3))
# barplot #1
barplot(VADeaths, border = "dark blue")
X1 <- grconvertX(0, "user", "ndc")
# barplot #2
barplot(VADeaths, border = "yellow")
# barplot #3
m <- barplot(VADeaths, border = "green")
X2 <- grconvertX(tail(m, 1) + 0.5, "user", "ndc") # default width of bars = 1
Y <- grconvertY(50, "user", "ndc")
## Horizontal line
pushViewport(viewport())
grid.lines(x = c(X1, X2), y = Y, gp = gpar(col = "red"))
popViewport()
अंत में, यहाँ एक लगभग बराबर है, और अधिक आम तौर पर उपयोगी तरीका है: यहाँ विकल्प के एक जोड़े हैं।आपकी मदद के लिए
library(grid)
library(gridBase)
par(mfrow=c(1,3))
barplot(VADeaths); vps1 <- do.call(vpStack, baseViewports())
barplot(VADeaths)
barplot(VADeaths); vps3 <- do.call(vpStack, baseViewports())
pushViewport(vps1)
Y <- convertY(unit(50,"native"), "npc")
popViewport(3)
grid.move.to(x = unit(0, "npc"), y = Y, vp = vps1)
grid.line.to(x = unit(1, "npc"), y = Y, vp = vps3,
gp = gpar(col = "red"))
यह सबसे अच्छा मैं इसके बारे में कठिन बिना सोचे क्या कर सकते हैं:
par(mfrow = c(1,3),xpd = NA)
for (i in 1:3){
x <- rnorm(200,i)
hist(x)
if (i == 1) segments(par("usr")[1],10,30,10)
}
मुझे यकीन है कि नहीं यकीन है कि लाइन संवारता बिना सही जगह पर समाप्त होता है कैसे बनाने के लिए कर रहा हूँ। प्रत्येक क्षेत्र में एक सेगमेंट प्लॉट करने से यह हल हो जाएगा, लेकिन ऊंचाइयों को ठीक से लाइन करने का मुद्दा पेश करें। लेकिन यह कम से कम एक अच्छा प्रारंभिक बिंदु हो सकता है।
मुझे लगता है कि यह ग्रिड ग्राफिक्स में आसान है, लेकिन मुझे सत्यापित करने के लिए कुछ शोध करना होगा।
धन्यवाद: यह काम करता है grid.move.to()
और grid.line.to()
लेख @ mdsumner के जवाब में से जुड़ा हुआ में पॉल मुरेल द्वारा demo'd कार्यरत हैं। –
gung
पॉल मुरेल द्वारा इस लेख से पता चलता दो अलग समन्वय प्रणालियों के बीच लाइनों आकर्षित करने के लिए grid
ग्राफिक्स का उपयोग इस मामले लाइनों अंत अंक दो अलग-अलग उप भूखंडों के मूल स्थान में निर्दिष्ट है कि में,:
पॉल मुरेल । ग्रिड ग्राफिक्स पैकेज। आर समाचार, 2 (2): 14-19, जून 2002
यह पीडीएफ लेख के पेज 17 पर है:
धन्यवाद, मैं लेख पढ़ रहा हूं। – gung
हाँ, उस महान लिंक के लिए धन्यवाद। मैंने अभी अपने जवाब में एक तीसरा कोड ब्लॉक जोड़ा है, जो मुरेल के लेख में प्रदर्शित कुछ कार्यों ('grid.move.to()' और 'grid.line.to()') का उपयोग करता है। –
- 1. मैं gnuplot में एक लंबवत रेखा कैसे आकर्षित करूं?
- 2. WPF में एक चिकनी घुमावदार रेखा कैसे आकर्षित करें?
- 3. आप डायरेक्टएक्स 11 में टेक्स्ट कैसे आकर्षित करते हैं?
- 4. matplotlib में, आप आर-स्टाइल अक्ष टिक्स कैसे आकर्षित करते हैं जो धुरी से बाहर की ओर इंगित करते हैं?
- 5. आप एक सहयोगी, संस्करण-नियंत्रित वातावरण में ओरेकल पैकेज पर कैसे काम करते हैं?
- 6. आप आर में एक समय क्षेत्र से दूसरे समय में दिनांक/समय कैसे परिवर्तित करते हैं?
- 7. आर - एक खाली साजिश कैसे आकर्षित करें?
- 8. आप आर में stderr कैसे प्रिंट करते हैं?
- 9. आप क्रेयॉन की तरह कैसे आकर्षित करते हैं?
- 10. क्लोजर में आप एक सूची को यादृच्छिक कैसे करते हैं?
- 11. आप हास्केल में एक सामान्य ज्ञापन फ़ंक्शन कैसे करते हैं?
- 12. आप एक चुस्त परियोजना में संस्करण संख्या कैसे करते हैं? ।।
- 13. आप Jinja2 में एक सूची कैसे क्रमबद्ध करते हैं?
- 14. आप वीबीए में एक सरणी को कैसे कम करते हैं?
- 15. आप कक्षाओं में एक कार्यक्रम कैसे ट्रिगर करते हैं?
- 16. आप एक्स्टजेस में एक पेड़ कैसे साफ़ करते हैं?
- 17. आयरनपीथन में आप एक इंटरफेस कैसे कार्यान्वित करते हैं?
- 18. ड्रैगगेबल और ड्रॉपपेबल के बीच एक रेखा कैसे आकर्षित करें?
- 19. एक मीडियाविकि वातावरण में
- 20. मैं एक फॉर्म पर एक रेखा कैसे आकर्षित करूं? Vb.net में
- 21. आप कम विलंबता वातावरण में विलंबता को कैसे मापते हैं?
- 22. आप पैकेज में आर डेटा आंतरिक कैसे संभालते हैं?
- 23. कैसे एक "ज़ूम में" प्रभाव आर
- 24. आप वर्तमान उपयोगकर्ता को विंडोज वातावरण में कैसे ढूंढते हैं?
- 25. Android पर ImageView में कोई रेखा कैसे आकर्षित करें?
- 26. मोंगो डीबी में आप एक सरणी में एक एम्बेडेड ऑब्जेक्ट फ़ील्ड को कैसे इंडेक्स करते हैं?
- 27. आप प्रत्येक तत्व को एक सूची में एक सूची में कैसे विभाजित करते हैं?
- 28. आप एक्शनस्क्रिप्ट में एक स्ट्रिंग में एक बूलियन कैसे परिवर्तित करते हैं?
- 29. एक रेखा को आयताकार में बदलें
- 30. आप कैसे ग्रहण करते हैं, ग्रहण में संपादित करते हैं और एक एपीके recompile? क्रमशः?
+1 अच्छा! क्या आप इकाइयों/समन्वय/क्लिपिंग को मालिश करने के तरीके के बारे में जानते हैं, जैसे कि रेखा बाएं अधिकांश वाई धुरी से हरी बार के दाएं किनारे तक फैली हुई है? – joran
मेरे पास एक विचार है, और अगर यह काम करता है तो मैं इसे जोड़ दूंगा। अभी, मैं सूरज सेट से पहले लॉन को उड़ाने के लिए बंद हूं ... –
धन्यवाद, यह वास्तव में सहायक है! मैं अपने खाते पर लॉन-मowing को रोकने की आपकी इच्छा की सराहना करता हूं ;-) – gung