2012-12-21 23 views
8

मैं आर के लिए बहुत नया हूं, इसलिए शायद मुझे बेवकूफ एक प्रश्न के लिए क्षमा करें।एक बहुआयामी सीएसवी फ़ाइल कैसे प्लॉट करें?

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

कार्य एक ही चार्ट (उसी अक्ष के साथ) पर सभी 17 लाइनों को साजिश करना है।

बहुत आसान लगता है लेकिन वास्तव में ऐसा करने के लिए बहुत स्पष्ट नहीं है।

उत्तर

2

डेटा को डेटा.फ्रेम के रूप में डेटा इनपुट करने के लिए आप read.csv का उपयोग कर सकते हैं। फिर आपके पास साजिश के लिए बहुत सारे विकल्प हैं। मैं सबसे अधिक जांच के काम के लिए lattice पसंद करता हूं।

दो जाली में। यहां मैं चार्ट में यादृच्छिक डेटा बना रहा हूं।

library(lattice) 
d <- data.frame(index=1:20, x=rnorm(20), y=rnorm(20)) 

> head(d, n=3) 
    index   x   y 
1  1 -1.065591 0.2422635 
2  2 -1.563782 -1.4250984 
3  3 1.156537 0.3659411 

xyplot(x+y~index, data=d, type='l', auto.key=list(space='right')) 

आप कॉलम के नाम से सूत्र उत्पन्न कर सकते हैं। मैं आमतौर पर शीघ्र से ऐसा नहीं है, लेकिन कोड में इस तरह के निर्माणों का उपयोग करें:

f <- paste(paste(names(d[,-1,drop=FALSE]), collapse="+"), 
      names(d[,1,drop=FALSE]), 
      sep=" ~ ") 

xyplot(as.formula(f), data=d, type='l', auto.key=list(space='right')) 

बेन के जवाब के रूप में, type='l' निर्दिष्ट करता लाइनों। अंक के लिए डिफ़ॉल्ट type='p' है। श्रृंखला को लेबल करने के लिए मैंने auto.key पैरामीटर जोड़ा।

enter image description here

+0

मैं अपने डेटा को 'd <- read.table (" mytable.csv ") 'के साथ लोड करने के बाद और' हेड (डी, एन = 3) 'कमांड जारी करता हूं, हेडर लाइन बुद्धिमान ऑफसेट दिखाई देती है - दिखता है खाली है और वास्तविक हेडर देखने के लिए दाएं स्क्रॉल किया जाना है। जब मैं 'xyplot (x + y ~ अनुक्रमणिका, डेटा = डी, टाइप =' एल ')' कमांड जारी करता हूं, तो यह 'eval में त्रुटि देता है (expr, envir, enclos): ऑब्जेक्ट' x 'नहीं मिला'। लेकिन बेन का समाधान उसी फ़ाइल के साथ ठीक काम करता है और यादृच्छिक डेटा के साथ आपका उदाहरण भी काम करता है। – Ivan

+0

मेरे उदाहरण में, 'x' और 'y' डेटा फ्रेम में कॉलम के नाम हैं। आपको वास्तविक कॉलम नामों का उपयोग करना होगा। मुझे 'read.csv' निर्दिष्ट होना चाहिए क्योंकि यह आपके लिए सही डिफ़ॉल्ट (हेडर = TRUE, sep = ",") प्रदान करेगा। मैं इसे प्रतिबिंबित करने के लिए संपादित करूंगा। आपके डेटा में आपके पास कौन से कॉलम नाम हैं? –

+0

मैंने इसे काम करने में कामयाब रहा है, धन्यवाद। – Ivan

18

शायद सबसे कॉम्पैक्ट, आधार-R-एकमात्र समाधान

mydata <- read.csv("mydatafile.csv") 
matplot(mydata[, 1], mydata[, -1], type="l") 
  • header=TRUE है read.csv() करने के लिए एक डिफ़ॉल्ट विकल्प है, तो आप के अस्तित्व को निर्दिष्ट करने की आवश्यकता नहीं है हेडर पंक्ति स्पष्ट रूप से
  • mydata[, 1] पहला कॉलम चुनता है; mydata[, -1]सभी पहले कॉलम
  • type="l" लाइनों का चयन करता है (डिफ़ॉल्ट बिंदु है); ?matplot, ?plot लाइन प्रकार, रंग, आदि आदि आदि बदलने की जानकारी के लिए ...

देख एक बार जब आप जानते हैं कि matplot उपयोगी है आप अन्य उदाहरण है, उदा के लिए StackOverflow खोज सकते हैं How to draw multiple Lines from csv in R

+3

धन्यवाद, @ बेन-बोल्कर, आपका जवाब मेरी समस्या हल करने में बहुत अच्छा है। मुझे उम्मीद है कि आप मुझे मैथ्यू के जवाब को स्वीकार करने के लिए बुरा नहीं मानेंगे, हालांकि यह समस्या को हल करता है क्योंकि मैथ्यू को अभी तक बहुत कम प्रतिष्ठा अंक मिल गए हैं। – Ivan

+2

कोई समस्या नहीं .... –

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