2013-03-16 3 views
7

में चिकनी घटता साजिश R का उपयोग करना, मैं एक रची साजिश तैयार की है। यदि आप वक्र देखते हैं, तो वे चिकनी नहीं हैं। उन्हें चिकनी बनाने के लिए कैसे? यहां तक ​​कि एक्सेल प्लॉट्स कहीं अधिक चिकनी वक्र हैं। डिवाइस विशेषताएं: विंडोज 7, स्क्रीन रेज़ोल्यूशन = 1366 x 768 (अधिकतम)कैसे आर

यहां साजिश है।

plot

के बाद कोड साजिश आकर्षित करने के लिए प्रयोग किया जाता है।

plot(NA,xlim=c(0,1),ylim=c(0,1),xlab="delta",ylab="K", xaxs="i",yaxs="i") # Empty plot 
a1 <- curve((x+x^7-x^2-x^4)/(1+x-x^3-x^4), from=0, n=450000, add = TRUE) # First curve 

पूर्ण कोड उपलब्ध here

+0

तुम भी इसी साजिश मूल एक ..not क्या डिवाइस (क्वार्ट्ज/X11, jpeg/png/पीडीएफ पर जोड़ना चाहिए ... – agstudy

+1

...) क्या आपने इसे साजिश दी? – plannapus

+0

@plannapus मैं अपने प्रश्न, कृपया explian –

उत्तर

5

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

# Open device: 
pdf("D:/test.pdf") #change for appropriate file path 
plot(NA,xlim=c(0,1),ylim=c(0,1),xlab="delta",ylab="K", xaxs="i",yaxs="i") 
a1 <- curve((x+x^7-x^2-x^4)/(1+x-x^3-x^4), from=0, n=450000, add = TRUE) 
dev.off() #close device 

अब पीडीएफ को देखें, और यह पूरी तरह से ठीक लग रहा है। आप उदाहरण जेपीजी छवि के लिए चाहते हैं, समारोह jpeg आदि का उपयोग करें, अधिक जानकारी के लिए ?jpeg देखते हैं कि कैसे TIFF, JPEG, PNG या BMP, और तर्क छवि का आकार, संकल्प और इस तरह के लिए के रूप में बचाने के लिए।

(नोट, यहां इस्तेमाल की जाने वाली शर्तें डिवाइस आदि पूरी तरह से सही नहीं हो सकती हैं, मैं इस शब्दावली से पूरी तरह से परिचित नहीं हूं, अगर कोई उचित हो तो अधिक चालाक संपादित कर सकते हैं)।

+0

डिवाइस सही शब्द है जो मुझे विश्वास है। ('? डिवाइस' देखें) – plannapus

+0

मैंने इस विधि को आजमाया। 'पीडीएफ' वास्तव में अच्छी तरह से काम करता है, लेकिन 'पीएनजी' का उपयोग करके कोई फर्क पड़ता है। –

+0

उत्पन्न फ़ाइल को पढ़ने के लिए मुझे 'R' क्यों बंद करना है? –

2

मुझे आपकी समस्या की कोई निश्चितता नहीं है (यह आपके द्वारा दिखाए गए साजिश में स्पष्ट नहीं है), लेकिन आप अपने बिंदुओं के घन (या Hermite) स्पलीन इंटरपोलेशन करके सुधार कर सकते हैं। यहां spline और splinefun का उपयोग करके कुछ विकल्प दिए गए हैं।

enter image description here

layout(matrix(c(1,2,3),nrow=3,byrow=TRUE)) 
plot(NA,xlim=c(0,1),ylim=c(0,0.2),xlab="delta",ylab="K", xaxs="i",yaxs="i", 
    main='orginal plot with 45000 points') # Empty plot 
a1 <- curve((x+x^7-x^2-x^4)/(1+x-x^3-x^4), from=0, n=45000, add = TRUE) 
x <- seq(0,1,length.out=1000) 
y <- (x+x^7-x^2-x^4)/(1+x-x^3-x^4) 
f <- splinefun(x, y) 
plot(NA,xlim=c(0,1),ylim=c(0,0.2),xlab="delta",ylab="K", xaxs="i",yaxs="i", 
    main='splinefun plot with 1000 points') 
curve(f(x),0, 1, col = "green", lwd = 1.5,add=TRUE) 
plot(NA,xlim=c(0,1),ylim=c(0,0.2),xlab="delta",ylab="K", xaxs="i",yaxs="i", 
    main='spline plot with 1000 points') 
lines(spline(x,y), col = 2) 
8

फिलहाल, यह लग रहा है अपने भूखंड की तरह वक्र खुद की वजह से नहीं दांतेदार है, लेकिन क्योंकि कैसे अपनी स्क्रीन प्रदर्शित की।

@Hemmo एक रेखापुंज प्रारूप के बजाय एक वेक्टर ग्राफिक्स प्रारूप का उपयोग करके इस समाधान को ठीक करने का प्रस्ताव रखा। यह सबसे अच्छा समाधान है, लेकिन यदि आपको रास्टर प्रारूप का उपयोग करने की जरुरत है, तो आप एंटी-एलियासिंग का उपयोग कर सकते हैं।

एंटी-एलियासिंग का मतलब है कि साजिश रेखाओं के चारों ओर कुछ ग्रे फज़ के साथ खींची जाती है ताकि वे दिखें कि वे मानव आंखों के लिए घुमाए गए हैं। यदि आप एंटी-एलाइज्ड छवि पर ज़ूम इन करते हैं तो आप इसे आसानी से देखेंगे। अभी के लिए:

png("no-alias.png") 
# Your code 
dev.off() 

enter image description here

cairographics विरोधी aliasing प्रदान करता है। तो एक विकल्प के रूप में उपयोग करने के लिए png:

png("alias.png", type="cairo") 
# Your code again 
dev.off() 

enter image description here

+0

इस पर बहुत सराहना की। धन्यवाद। – Balter