2012-01-01 19 views
28

के लिए निश्चित पहलू अनुपात को परिभाषित करने के लिए कैसे मैं दो आबादी से प्रत्येक व्यक्ति में मापा गया दो आइसोटोप के लिए सहसंबंध गुणांक (मान = 0.0: 1.0) की साजिश रच रहा हूं। मैं अपने स्कैटर-प्लॉट के लिए एक निश्चित पहलू अनुपात चाहता हूं ताकि एक्स- और वाई-अक्ष बिल्कुल समान आकार हों, चाहे ग्राफिक्स डिवाइस चाहे। सुझाव?स्कैटर-प्लॉट

यह आर में मेरी पहली साजिश है, मेरे कोड में परिशोधन पर कोई टिप्पणी की सराहना की जाती है? आखिरकार, बुनियादी साजिश तकनीक सीखने में निवेश करना उचित है या क्या मुझे ggplot2 या जाली के लिए सही कूदना चाहिए?

मेरे भूखंड स्क्रिप्ट:

## Create dataset 
WW_corr <- 
structure(list(South_N15 = c(0.7976495, 0.1796725, 0.5338347, 
0.4103769, 0.7447027, 0.5080296, 0.7566544, 0.7432026, 0.8927161 
), South_C13 = c(0.76706752, 0.02320767, 0.88429902, 0.36648357, 
0.73840937, 0.0523504, 0.52145159, 0.50707858, 0.51874445), North_N15 = c(0.7483608, 
0.4294148, 0.9283554, 0.8831571, 0.5056481, 0.1945943, 0.8492716, 
0.5759033, 0.7483608), North_C13 = c(0.08114805, 0.47268136, 
0.94975596, 0.06023815, 0.33652839, 0.53055943, 0.30228833, 0.8864435, 
0.08114805)), .Names = c("South_N15", "South_C13", "North_N15", 
"North_C13"), row.names = c(NA, -9L), class = "data.frame") 

opar <- par() 

## Plot results 
par(oma = c(1, 0, 0, 0), mar = c(4, 5, 2, 2))   
plot(1,1,xlim=c(0:1.0), ylim=c(0:1.0), type="n", las=1, bty="n", main = NULL, 
    ylab=expression(paste("Correlation Coefficient (r) for ", delta ^{15},"N ", 
        "\u0028","\u2030","\u0029")), 
    xlab=expression(paste("Correlation Coefficient (r) for ", delta ^{13},"C ", 
        "\u0028","\u2030","\u0029"))) 

points(WW_corr$South_N15, WW_corr$South_C13, pch = 23, cex = 1.25, 
     bg ="antiquewhite4", col = "antiquewhite4") 
points(WW_corr$North_N15, WW_corr$North_C13, pch = 15, cex = 1.25, 
     bg ="black") 
axis(1, at = seq(0, 1.0, by = 0.1), labels = F, tick = TRUE, tck = -0.01) 
axis(2, at = seq(0, 1.0, by = 0.1), labels = F, tick = TRUE, tck = -0.01) 
abline(h=.86, v=.86, col = "gray60", lty = 2) 
legend("topleft", c("North", "South"), pch = c(15, 23), 
     col = c("black", "antiquewhite4"), pt.bg = c("black", "antiquewhite4"), 
     horiz=TRUE, bty = "n") 

par(opar) 
+1

हाँ, जैसा कि मैंने कहा है और नहीं करता जैसा मैं करता हूं :-), और 'ggplot' सीखें। –

+2

आपको स्पष्ट रूप से आधार ग्राफिक्स की मूलभूत बातें मिल गई हैं, इसलिए मैं कम से कम ggplot2/जाली के लिए महसूस कर रहा हूं, क्योंकि इस प्रश्न की गुणवत्ता को देखते हुए यह आपके लिए एक बड़ा समय निवेश नहीं होगा। वे काफी अलग हैं, लेकिन आप उन्हें जल्दी उठा लेंगे। एक बार जब आप सामान्य वाक्यविन्यास + प्रत्येक के प्रवाह की भावना रखते हैं तो आप यह तय करने में सक्षम होंगे कि आप अपना अधिकांश समय किस समय व्यतीत करना चाहते हैं। लेकिन प्रत्येक के साथ बुनियादी परिचित होना बहुत सार्थक है। – joran

उत्तर

31

एक पैरामीटर साजिश के रूप में asp=1 का उपयोग करते हुए निम्न स्तर plot.window कॉल से व्याख्या हो जाएगी और आप एक एकात्मक पहलू अनुपात देना चाहिए। ऐसी संभावना है कि यलिम और एक्सलिम का उपयोग करने वाला एक कॉल पहलू अनुपात स्काइपिफिकेशन के साथ संघर्ष कर सकता है और asp "प्रबल" होना चाहिए। यह दूर से बहुत ही प्रभावशाली पहला आर ग्राफ है। और एक उत्कृष्ट सवाल निर्माण। उच्च अंक।

एक जारिंग नोट निर्माण का उपयोग xlim=c(0:1.0) था। चूंकि xlim एक दो तत्व वेक्टर की अपेक्षा करता है, इसलिए मुझे xlim = c (0,1) की उम्मीद होगी। भविष्य में त्रुटि के लिए कम कीस्ट्रोक और कम विषय के अधीन यदि आप सीमाओं के एक अलग सेट में बदल गए हैं, क्योंकि ":" ऑपरेटर आपको "0: 2.5" के साथ प्रयास करने पर अप्रत्याशित परिणाम देगा।

+0

धन्यवाद! हां, x- और ylim पर मेरी गलती कोलन बनाम अल्पविराम का उपयोग। मुझे लगता है कि मैं भाग्यशाली हूं कि मैं 0 से 2.5 के बजाय 0 से 1 का उपयोग कर रहा था। मैं एएसपी = 1 बनाम एएसपी = TRUE के बीच अंतर के बारे में अभी भी अस्पष्ट हूं। –

+1

'TRUE == 1', तो कोई फर्क नहीं पड़ता। लेकिन आप 1 के अलावा अन्य पहलू अनुपात का उपयोग कर सकते हैं। –

35
par(pty="s") 
plot(...) 

साजिश प्रकार सेट वर्ग है, जो अपने मामले में काम (मुझे लगता है कि) करना होगा क्योंकि आपके x और y पर्वतमाला ही हैं। काफी समान छिपी हुई विकल्प में? Par।