2011-04-14 8 views
12

शामिल हो। मैं आर में एक साजिश के सभी मार्जिन और "आकृति क्षेत्र" को हटाने की कोशिश कर रहा हूं, ताकि साजिश क्षेत्र में संपूर्ण ग्राफिक डिवाइस शामिल हो। मैंने सोचा कि नीचे दिया गया कोड यह करेगा, लेकिन अभी भी मेरी साजिश के चारों ओर एक सीमा है (बाएं/नीचे चौड़ा, ऊपर/दाएं पतला)। धन्यवादसभी मार्जिन को हटाने की कोशिश कर रहा है ताकि साजिश क्षेत्र में संपूर्ण ग्राफिक

par(oma=c(0, 0, 0, 0)) 
par(mar=c(0, 0, 0, 0)) 
par(plt=c(0, 1, 0, 1)) 

सोचा कि मैं अपनी प्रगति दिखाने के लिए एक तस्वीर जोड़ूंगा। एक्सएक्स और याक्स ने लगभग सभी सीमाओं को ऊपर और दाएं से हटा दिया- अभी भी बाएं और नीचे की सीमा है।

R plot

मेरी स्क्रिप्ट के संबंधित भाग के नीचे है।

png("Test.png", 
    width = 256, height = 256, 
    units = "px", pointsize = 6.4, 
    bg = "black", res = NA) 

par(mar=c(0, 0, 0, 0), xaxs='i', yaxs='i') 


smoothScatter(lhb$px, lhb$pz, nrpoints=0, xlim=c(-3,3), ylim=c(0,5), 
    main="", xlab="", ylab="", axes=FALSE, 
    colramp=colorRampPalette(c("black", "#202020", "#736AFF", "cyan", "yellow", "#F87431", "#FF7F00", "red", "#7E2217")) 
    ) 

segments(.83, 1.597, .83, 3.436, col = par("fg"), lty = par("lty"), lwd = par("lwd")) 
segments(-.83, 1.597, -.83, 3.436, col = par("fg"), lty = par("lty"), lwd = par("lwd")) 
segments(-.83, 3.436, .83, 3.436, col = par("fg"), lty = par("lty"), lwd = par("lwd")) 
segments(-.83, 1.597, .83, 1.597, col = par("fg"), lty = par("lty"), lwd = par("lwd")) 


dev.off() 

उत्तर

15

एक मुद्दा मूल रूप से plt क्या नहीं प्राप्त कर रहा है। ?par से हमने:

‘plt’ A vector of the form ‘c(x1, x2, y1, y2)’ giving the 
     coordinates of the plot region as fractions of the current 
     figure region. 

तो अपने भूखंड क्षेत्र शून्य आकार की अगर आप par(plt=c(1, 1, 1, 1)) करते हैं, इसलिए है कि जाने का रास्ता होने के लिए प्रतीत नहीं होता। ऐसा इसलिए है क्योंकि आकृति क्षेत्र में साजिश क्षेत्र है।

इस साजिश, पूरे क्षेत्र को कवर किया जा रहा है किसी भी हाशिए के बिना:

op <- par(mar = rep(0, 4)) 
plot(1:10) 
par(op) 

यह इतनी अच्छी तरह से शामिल किया गया है आप कुल्हाड़ियों या बॉक्स नहीं देख सकते हैं:

full region covered

यह 0 बाहरी मार्जिन (oma) के लिए डिफ़ॉल्ट मानता है। क्या यह वही है जिसकी आपको तलाश थी?

हम जानते हैं कि सिर्फ साजिश मार्जिन के रूप में ऊपर का समायोजन, देख सकते हैं, हम भी एक पक्ष प्रभाव के रूप plt मानदंड को बदलना:

> par("plt") 
[1] 0.1173174 0.9399106 0.1457273 0.8828467 
> op <- par(mar = rep(0, 4)) 
> par("plt") 
[1] 0 1 0 1 
> par(op) 
> par("plt") 
[1] 0.1173174 0.9399106 0.1457273 0.8828467 

यह दर्शाता है कि बस भूखंड मार्जिन की स्थापना एक साजिश/आंकड़ा पाने के लिए पर्याप्त है पूरे डिवाइस को शामिल क्षेत्र।

बेशक, अभी भी आंतरिक पैडिंग का एक छोटा सा हिस्सा है जो कुर्सियों की सीमाओं को x और y दोनों समन्वय में डेटा की सीमा से थोड़ा बड़ा है।लेकिन तुम xaxs और yaxs के साथ इस पर नियंत्रण कर सकते --- देख ?par

अद्यतन:

set.seed(1) 
dat <- matrix(rnorm(100*100), ncol = 100, nrow = 100) 

layout(matrix(1:2, ncol = 2)) 
image(dat) 
op <- par(mar = rep(0, 4)) 
image(dat) 
par(op) 
layout(1) 
: ओपी आंकड़ा वे हाशिए के बिना निर्माण करने के लिए कोशिश कर रहे हैं की तरह दिखाया गया है
रूप में, मैं एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण प्रदान कर सकते हैं

जो तुलना के लिए देता है:

comparison of default and no margins respectively

और बस पूरी साजिश क्षेत्र में दिखाई दे:

full plot region covered

+0

धन्यवाद, मैं एक ही समय आप अपने जवाब लिख रहे थे पर इस खोज की थी और इसके बाद के संस्करण plt (0,1,0,1) करने के लिए इसे बदल दिया है। अन्य सुझावों को भी देखेंगे। – taglius

+0

@taglius - लेकिन अगर आप 'par' (mar = rep (0, 4)) सेट करते हैं तो आपको इसकी आवश्यकता नहीं है। शून्य मार्जिन सेट करके, 'plt' को 'c (0,1,0,1)' पर सेट किया जाएगा। एक मिनट में मेरे उत्तर में एक मामूली अपडेट देखें। –

+2

यह सही दिखता है, पैरा सेट (mar = c (0, 0, 0, 0), xaxs = 'i', yaxs = 'i') जैसा कि मेरी लिपि में ऊपर है, ऊपर और दाएं किनारे से पूरी तरह से छुटकारा पाता है। अब मुझे बाएं/नीचे – taglius

0

एनए के लिए क्लिप क्षेत्र पैरामीटर 'एक्स पी' (डिवाइस के लिए काटा गया) सेट करके देखें।

सममूल्य (एक्स पी = एनए) plt() पर सुधार के लिए

+1

इस विचार के लिए धन्यवाद, यह कुछ भी बदलने के लिए प्रतीत नहीं होता था – taglius

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