Tufte के अक्ष को प्राप्त करने के लिए R भूखंडों में सीमाओं को हटाना


18

निम्नलिखित ग्राफ पर विचार करें:

x <- 1:100
y1 <- rnorm(100)
y2 <- rnorm(100)+100

par(mar=c(5,5,5,5))

plot(x,y1,pch=0,type="b",col="red",yaxt="n",ylim=c(-8,2),ylab="")
axis(side=2, at=c(-2,0,2))
mtext("red line", side = 2, line=2.5, at=0)

par(new=T)
plot(x,y2,pch=1,type="b",col="blue",yaxt="n",ylim=c(98,108), ylab="")
axis(side=4, at=c(98,100,102), labels=c("98%","100%","102%"))
mtext("blue line", side=4, line=2.5, at=100)

Tufte की शैली को प्राप्त करने के लिए मैं स्वचालित रूप से उत्पन्न सीमाओं को कैसे हटा सकता हूं और सिर्फ अक्ष रेखाओं को संरक्षित कर सकता हूं?


5
को देखो btyमें तर्क ?par, उदाहरण के लिए bty="n"। आप अपने कॉल में इस तर्क को पास कर सकते हैं plot
Glen_b -Reinstate Monica

3
FWIW, Tufte आगे गया: उसने दिखाया कि कैसे कुछ मामलों में स्वयं कुल्हाड़ियों के हिस्सों को मिटाकर अतिरिक्त जानकारी प्रदान करता है, प्रभावी रूप से प्रत्येक अक्ष को डेटा की सीमा के दृश्य प्रदर्शन में बदल देता है। इससे प्रेरित होकर, 1989 में मैंने छोटे-छोटे कई प्लॉट तैयार करने के लिए सॉफ्टवेयर लिखा, जिसमें इस डिज़ाइन को शामिल किया गया (कई अन्य लोगों के अलावा टफ्टे और बिल क्लीवलैंड के समूह से प्रेरित) और बाद में कई मिलियन ऐसे ग्राफिक्स तैयार किए। जब आपको नेत्रहीन रूप से इतने डेटा की खान करनी होती है, तो ऐसे सिद्धांत वास्तव में काम करते हैं।
whuber

@whuber प्रभावी रूप से, क्या आप कुल्हाड़ियों को एक तरह से गलीचा की साजिश से बदल रहे थे?
सिल्वरफिश

2
@Silver रग प्लॉट ड्रॉ करना एक अलग मुद्दा है - और मैंने ऐसा किया भी है। हालांकि, यहां तक ​​कि एक गलीचा साजिश की अनुपस्थिति में भी आप चुन सकते हैं कि प्रत्येक धुरी को कहां रोकना और शुरू करना है। जब आप इसे न्यूनतम पर शुरू करते हैं और इसे अधिकतम पर रोकते हैं, तो आपने प्रत्येक सीमांत डेटा वितरण की पूरी श्रृंखला का एक दृश्य प्रतिनिधित्व प्राप्त किया है।
whuber

2
@ व्हीबर थैंक्स, मैं अब समझ गया हूं कि आप किस चीज का जिक्र कर रहे थे - टफ्टे ने इसे "रेंज-फ्रेम" कहा (और न केवल एक्स्ट्रेमा पर वहां की लाइनों को रोकने का सुझाव दिया, बल्कि अपने मूल्यों को इंगित करने के लिए अंतिम लेबल का उपयोग करने के लिए - वह क्या कहता है "रेंज-लेबल के साथ रेंज-फ्रेम")। बाद के पाठकों के लिए एक संदर्भ चाहिए, यह मात्रात्मक जानकारी के दृश्य प्रदर्शन से है, अध्याय 7 ("मल्टीफ़ंक्शनिंग ग्राफिकल एलिमेंट्स")। जैसा कि यह एक उच्च-देखा जाने वाला धागा है, "टफ्टे की धुरी" का वास्तव में क्या अर्थ हो सकता है, यह जोड़ा गया चित्रण (और प्रश्न को देखते हुए, कुछ आर कोड) को देखना अच्छा होगा।
सिल्वरफिश

जवाबों:


21

bty="n"दोनों भूखंड कमांड में जोड़ें ।

समय श्रृंखला के frame.plot=FALSEलिए, उसी प्रभाव के लिए जोड़ें ।

कट्टरपंथी टुटे कुल्हाड़ियों के लिए, http://www.cl.cam.ac.uk/~sjm217/projects/graphics/ देखें


5

यह करने के लिए सीधा है, आप सिर्फ तर्क को शामिल करते हैं axes=FALSE। विचार करें:

x  <- 1:100
y1 <- rnorm(100)
y2 <- rnorm(100) + 100

windows()
  par(mar=c(5,5,5,5))
  plot(x, y1, pch=0, type="b", col="red", yaxt="n", ylim=c(-8,2), ylab="", axes=F)
  axis(side=2, at=c(-2,0,2))
  mtext("red line", side = 2, line=2.5, at=0)

  par(new=T)
  plot(x, y2, pch=1, type="b", col="blue", yaxt="n", ylim=c(98,108), ylab="", axes=F)
  axis(side=4, at=c(98,100,102), labels=c("98%","100%","102%"))
  mtext("blue line", side=4, line=2.5, at=100)

यहाँ छवि विवरण दर्ज करें

ध्यान दें कि यह हिस्टोग्राम के लिए समान रूप से काम करता है:

windows()
hist(y1, axes=F)

यहाँ छवि विवरण दर्ज करें


4

यदि तुम प्रयोग करते हो

par(bty = 'n') 

प्लॉट पर कॉल करने से पहले इसे चिड़ियाघर के लिए ठीक कर देंगे। यह विभिन्न स्थितियों के लिए भी इसे ठीक कर सकता है जहां यह प्लॉटिंग कमांड के लिए निष्क्रिय नहीं है।

(सममूल्य में बाइट विकल्प की जाँच करें) (प्लॉट के लिए अन्य प्रकार के फ़्रेमों के लिए सहायता)


0

मैं टफटे के संदर्भ के बिना, भूखंडों में सीमाओं को हटाने के अधिक सामान्य प्रश्न का उत्तर दे रहा हूं।

हिस्टोग्राम के लिए मुझे पता नहीं चला कि बीटीएन = 'एन' को सीमा से छुटकारा मिल गया।

एक समाधान जो हिस्टोग्राम के लिए काम करता है और सभी प्रकार के भूखंडों के लिए काम करना चाहिए, सीमा के लिए लाइन प्रकार को अदृश्य पर सेट करना है: lty = "blank"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.