2013-03-15 4 views
7

R का उपयोग करके, मैंने this के समान एक hatched plot तैयार किया है। मैं Rसाजिश के संबंध में सामान्य मुद्दे

  1. लिंक में दिखाए गए अनुसार पौराणिक कथाओं को जोड़ना चाहता हूं।
  2. डेल्टा
  3. के ग्रीक प्रतीक द्वारा एक्स-अक्ष नाम बदलें साजिश पर चौराहे के विभिन्न बिंदुओं का उल्लेख करने के लिए। उदाहरण के लिए, x = 0.75 पर कुछ वक्र एक्स-अक्ष से मिलते हैं, मैं उस बिंदु के पास मान 0.75 डालना चाहता हूं।
  4. यदि आप वक्र देखते हैं, तो वे चिकनी नहीं हैं। उन्हें चिकनी बनाने के लिए कैसे? यहां तक ​​कि एक्सेल प्लॉट्स कहीं अधिक चिकनी वक्र हैं।

इसे कैसे प्राप्त करें?

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

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 
a2 <- curve((x^2+x^3-x-x^5)/(x+x^2), to=0.9, n=45000, add = TRUE) 
a3 <- curve((x+x^7-x^2-x^4)/(1+x-x^2-x^3-x^4+x^7),from=0, n=45000, add = TRUE) 
a4 <- curve((x+x^8-x^3-x^5)/(x+x^8-x^3-x^5+1-x^4),from=0, to=0.9, n=45000, add = TRUE) 
a5 <- curve((x+x^8-x^3-x^5)/(1+x-x^5-x^4),from=0, n=45000, add = TRUE) 
a6 <- curve((x+x^2-x^4-1)/(x-x^4), to=0.84, n=45000, add = TRUE) 
a7 <- curve((x+x^6-x^3-x^4)/(1+x-x^3-x^4), from=0.83 ,to=1, n=45000, add = TRUE) 
a8 <- curve((1+x^7-x^2-x^4)/(1+x^3-x-x^4), from=0.819, n=45000, add = TRUE) 
a9 <- curve((x)/(1+x), n=45000,from=0.819, to =1, add = TRUE) 


names(a1) <- c('xA1','yA1') 
names(a2) <- c('xA2','yA2') 
names(a3) <- c('xA3','yA3') 
names(a4) <- c('xA4','yA4') 
names(a5) <- c('xA5','yA5') 
names(a6) <- c('xA6','yA6') 
names(a7) <- c('xA7','yA7') 
names(a8) <- c('xA8','yA8') 
names(a9) <- c('xA9','yA9') 


with(as.list(c(a1,a2,a3,a4,a5,a6,a7,a8,a9)),{ 

idA <- yA3 >=0 
idB <- yA2 >=0 & yA2 <= yA4 
idC <- yA4 >= yA2 

idD <- yA5 >=0 

idE <- yA6 >=0 & yA6 <= yA7 
idF <- yA7 <= yA6 

idG <- yA8 >=0 & yA8 <= yA9 
idH <- xA9 >= xA8 & xA9 >0.8 

idI <- xA1 >=0 & xA1 <= 0.755 
idJ <- xA3 >=0 & xA3 <= 0.755 



polygon(x = c(xA3[idA],xA2[idB],rev(xA4[idC])), 
     y = c(yA3[idA],yA2[idB],rev(yA4[idC])), 
     density=20, angle=90, border=NULL) 

polygon(x = c(xA5[idD],1,1,0), 
     y = c(yA5[idD],0,1,1), 
     density=20, angle=0, border=NULL) 

polygon(x = c(xA6,xA7), 
     y = c(yA6,yA7), 
     density=20, angle=45, border=NULL) 

polygon(x = c(rev(xA8[idG]),xA9[idH],1), 
     y = c(rev(yA8[idG]),yA9[idH],0), 
     density=20, angle=135, border=NULL) 

polygon(x = c(xA1[idI],rev(xA3[idJ])), 
     y = c(yA1[idI],rev(yA3[idJ])), 
     col="black", border=NULL) 


}) 
+3

आप गंभीरता से एक जवाब उम्मीद नहीं कर सकते इसे पोस्ट करने से? आपने अपने ग्राफिक को कैसे प्लॉट किया है इसके बारे में कुछ विवरण जोड़ें। अपने ग्राफ (जाली, ग्रिड, आधार इत्यादि) को साजिश करने के लिए उपयोग की जाने वाली चीज़ों के आधार पर किंवदंती को कैसे जोड़ा जाएगा –

+0

आपने इसे इस प्रश्न में क्यों नहीं जोड़ा? http://stackoverflow.com/questions/15385063/easiest-way-to-plot-inequalities-with-hatched- भरें – JT85

+3

ग्रेट एडिट और अच्छा ग्राफ। एक स्पष्ट, पुनरुत्पादित प्रश्न के लिए +1। भविष्य में, अपने सभी सवालों को इस तरह से तैयार करने पर विचार करें। –

उत्तर

10
layout(matrix(c(1,2),nrow=1), 
     width=c(4,1)) #Divide your plotting region in two inequal part 
par(mar=c(5,4,4,0)) #Get rid of the margin on the right side 
plot(NA,xlim=c(0,1),ylim=c(0,1), 
    xlab=expression(delta),ylab="K", xaxs="i",yaxs="i") # Here's your delta 
a1 <- curve((x+x^7-x^2-x^4)/(1+x-x^3-x^4), from=0, n=450000, add = TRUE) 

... 

par(mar=c(5,0,4,2)) #No margin on the left side 
plot(c(0,1),type="n", axes=F, xlab="", ylab="") #Empty plot 
legend("top",legend=c("1","2","3","4","5"), 
     density=c(20,20,20,20,NA), angle=c(90,0,45,135,NA), 
     col=c(NA,NA,NA,NA,"black"), bty="n", cex=1.5) 

enter image description here

बिंदु आप लेबल करना चाहते का सवाल है, उपयोग समारोह या तो text (या mtext) यह "programmaticaly" करने के लिए या locator यह सहभागी क्या करना है।

संपादित: वैकल्पिक रूप से (के रूप में मैं टिप्पणी में कहा), इस रूप में अच्छी तरह साजिश क्षेत्र के बाहर अपने कथा डाल करने के लिए काम करते हैं और शायद होगा आसान:

par(mar=c(5,4,4,8)) 
plot(NA,xlim=c(0,1),ylim=c(0,1), 
    xlab=expression(delta),ylab="K", xaxs="i",yaxs="i") # Here's your delta 
    a1 <- curve((x+x^7-x^2-x^4)/(1+x-x^3-x^4), from=0, n=450000, add = TRUE) 

... 

legend(1,1,legend=c("1","2","3","4","5"), 
    density=c(20,20,20,20,NA), angle=c(90,0,45,135,NA), 
    col=c(NA,NA,NA,NA,"black"), bty="n", cex=1.5, xpd=TRUE) 
+2

+1! आप भयानक आदमी हैं!मैं 'लेआउट' के बारे में भूल जाओ! – agstudy

+0

धन्यवाद! यहां 'लेआउट' का उपयोग करने का एक विकल्प सही मार्जिन बढ़ाने के लिए हो सकता है ('par (mar = c (5,4,4,8)) कहें) और तर्क' xpd = TRUE' का उपयोग करके बाहर की किंवदंती को प्लॉट करें: ' किंवदंती (1,1, किंवदंती = ..., xpd = TRUE) ' – plannapus

+0

असल में मुझे लगता है कि मैं इसका जवाब बदलूंगा, क्योंकि यह एक आसान तरीका है। – plannapus

8

पारंपरिक ग्राफिक्स प्रणाली एक साजिश करने के लिए एक कथा या कुंजी जोड़ने के लिए कथा() फ़ंक्शन प्रदान करता है। किंवदंती आमतौर पर साजिश क्षेत्र, के भीतर खींची जाती है और यह उपयोगकर्ता निर्देशांक के सापेक्ष स्थित होती है।

समारोह में कई तर्क हैं, तो यहाँ हम कोण तर्क का उपयोग करने के और घनत्व टुकड़ों में बंटी क्षेत्रों अंतर करने के लिए की जरूरत है।

legend(0.5, 0.8, paste("region", 1:5), 
     density=c(20,20,20,20,0), 
     angle=c(90,0,45,135,0)) 

enter image description here

+0

जो तेज़ था। किंवदंती में काला क्षेत्र कैसे जोड़ें? प्लॉट क्षेत्र से परे पौराणिक कथाओं को कैसे रखा जाए? साजिश क्षेत्र से परे –

+0

? क्या आपका मतलब बाएं या दाएं है? – agstudy

+0

अधिमानतः नीचे, अन्यथा सही। 'शीर्ष से नीचे' के पौराणिक कथाओं को 'बाएं से दाएं' लिखना भी संभव है? –

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