2009-05-18 9 views
18

मैं निम्नलिखित डेटा वाली foo.csv नाम के एक अल्पविराम से अलग फ़ाइल है:साजिश सरल डाटा

1) मैं पहले कॉलम कैसे साजिश है (x-:

scale, serial, spawn, for, worker 
5, 0.000178, 0.000288, 0.000292, 0.000300 
10, 0.156986, 0.297926, 0.064509, 0.066297 
12, 2.658998, 6.059502, 0.912733, 0.923606 
15, 188.023411, 719.463264, 164.111459, 161.687982 

मैं अनिवार्य रूप से दो प्रश्न पूछना चाहते हैं अक्ष) दूसरे कॉलम बनाम (वाई-अक्ष)? मैं (this site पढ़ने से) यह कोशिश कर रहा हूँ:

data <- read.table("foo.csv", header=T,sep=",") 
attach(data) 
scale <- data[1] 
serial <- data[2] 
plot(scale,serial) 

लेकिन मैं इस त्रुटि वापस पाने:

Error in stripchart.default(x1, ...) : invalid plotting method 

किसी भी विचार मैं गलत क्या कर रहा हूँ? एक quick Google search किसी अन्य समस्या को एक ही समस्या के साथ प्रकट करता है लेकिन कोई प्रासंगिक उत्तर नहीं है। अद्यतन: यह पता चला है कि यह ठीक काम करता है अगर मैं मध्य में दो असाइनमेंट स्टेटमेंट छोड़ देता हूं। कोई विचार यह क्यों है?

दूसरा सवाल पहले के बाद बहुत आसानी से इस प्रकार है:

2) मैं पहले कॉलम (x- अक्ष) y- अक्ष पर सभी स्तंभों बनाम कैसे साजिश करते हैं? मुझे लगता है कि जब मैं पहली समस्या में भाग ले रहा हूं, तो मुझे लगता है कि यह बहुत आसान है, लेकिन मैं आर के लिए थोड़ा सा नया हूं इसलिए मैं अभी भी अपने सिर को लपेट रहा हूं।

उत्तर

11

आप दो पंक्तियों की जरूरत नहीं है मैं शीर्ष लेख "पैमाने" नाम दिया read.table में।

इसके अलावा scale <- data[1] एक data.frame

data[1] 
1  5 
2 10 
3 12 
4 15 

से एक तत्व बनाता है जबकि scaleread.table से एक सदिश

5 10 12 15 

है और plot(scale, serial) समारोह बल्कि एक data.frame से वेक्टर की उम्मीद है, तो आप सिर्फ

plot(scale, serial) 
करने की आवश्यकता है

एक y- अक्ष पर डेटा के अन्य स्तंभों की साजिश रचने के लिए दृष्टिकोण:

plot(scale,serial, ylab="") 
par(new=TRUE) 
plot(scale,spawn,axes=F, ylab="", type="b") 
par(new=TRUE) 
plot(scale,for., axes=F, ylab="", type="b") 
par(new=TRUE) 
plot(scale,worker,axes=F, ylab="", type="b") 

संभवतः हैं ऐसा करने का बेहतर तरीके हैं, लेकिन वह मेरे वर्तमान अनुसंधान ज्ञान से परे है ....

+0

तो उसकी साजिश() कॉल कैसा दिखना चाहिए? –

+0

बस साजिश (स्केल, सीरियल) – luapyad

+0

का उपयोग करें दुर्भाग्य से, "स्केल" किसी प्रकार का वैश्विक प्रतीत होता है। –

2

मैं एक अनुसंधान विशेषज्ञ होने से दूर हूँ, लेकिन मैं तुम्हें एक data.frame की जरूरत है:

plot(data.frame(data[1],data[2])) 

यह मेरी आर सेटअप पर कम से कम साजिश कुछ करता है!

लुपायाद के उत्तर में निम्नलिखित सलाह के बाद, मैं इसके साथ आया।

scaling, serial, spawn, for, worker 
5, 0.000178, 0.000288, 0.000292, 0.000300 
10, 0.156986, 0.297926, 0.064509, 0.066297 
12, 2.658998, 6.059502, 0.912733, 0.923606 
15, 188.023411, 719.463264, 164.111459, 161.687982 

तो:

scale <- data[1] 
serial <- data[2] 

पैमाने पर और धारावाहिक के रूप में पहले से ही हेडर से स्थापित कर रहे हैं:

foo <- read.table("foo.csv", header=T,sep=",") 
attach(foo) 
plot(scaling, serial); 
2

इस प्रयास करें:

data <- read.csv('foo.csv') 
plot(serial ~ scale, data) 
dev.new() 
plot(spawn ~ scale, data) 
dev.new() 
plot(for. ~ scale, data) 
dev.new() 
plot(worker ~ scale, data) 
+2

आप या तो मैटलॉट (डेटा [1], डेटा [2,5], टाइप = "बी") या लेआउट से पहले व्यक्तिगत साजिश कमांड के साथ 4 प्लॉट्स को एक ग्राफ़िक में जोड़ सकते हैं (मैट्रिक्स (सी (1,2 , 3,4), 2,2, बाई = सही)) – bubaker

5

मैं आर में नए हूँ, लेकिन आप एक भूखंड, आसान में और मुद्रण या प्रस्तुति के लिए कुछ लालित्य :) साथ बनाम सभी स्तंभों पैमाने आकर्षित करने के लिए चाहते हैं, तो आप प्रोफेसर हैडली विकम के पैकेज का उपयोग कर सकते हैं ggplot2 & reshape।

स्थापना:

library(ggplot2) 
library(reshape) 

#read data 
data = read.table("foo.csv", header=T,sep=",") 

#melt data “scale vs. all” 
data2=melt(data,id=c("scale")) 
data2 

    scale variable  value 
1  5 serial 0.000178 
2  10 serial 0.156986 
3  12 serial 2.658998 
4  15 serial 188.023411 
5  5 spawn 0.000288 
6  10 spawn 0.297926 
7  12 spawn 6.059502 
8  15 spawn 719.463264 
9  5  for. 0.000292 
10 10  for. 0.064509 
11 12  for. 0.912733 
12 15  for. 164.111459 
13  5 worker 0.000300 
14 10 worker 0.066297 
15 12 worker 0.923606 
16 15 worker 161.687982 

#draw all variables at once as line with different linetypes 
qplot(scale,value,data=data2,geom="line",linetype=variable) 
अंक

तुम भी इस्तेमाल कर सकते हैं (geom=”points”), विभिन्न चर डॉट्स के लिए अलग अलग रंग या आकार (colours=variable or shape=variable) चुनते हैं, अक्ष समायोजित, सेट करें:

install.packages(“ggplot2”,dep=T) 
install.packages(“reshape”,dep=T) 

अपने उदाहरण ड्राइंग online documentation के लिए हर लाइन आदि

लिंक के लिए व्यक्तिगत विकल्प।

7

अपने उदाहरण में,

plot(scale, serial) 

काम नहीं करेगा क्योंकि scale और serial दोनों डेटा फ्रेम हैं, उदा

class(scale) 
[1] "data.frame" 

आप निम्न कोशिश करते हैं और points(), एक बार साजिश तैयार की गई है, का उपयोग शेष कॉलम प्लॉट करने के लिए कर सकता है। नोट, मैंने तीसरे कॉलम में रेंज को समायोजित करने के लिए plot में ylim पैरामीटर का उपयोग किया था।

data <- read.csv('foo.csv', header=T) 
plot(data$scale, data$serial, ylim=c(0,750)) 
points(data$scale, data$spawn, col='red') 
points(data$scale, data$for., col='green') 
points(data$scale, data$worker, col='blue') 
+1

धन्यवाद! आखिर में मेरी समस्या हल हो गई। –

0

यह साजिश रचने का एक सरल-r तरीका नहीं है:

r -cdps, -k1:2 foo.csv 

साजिश आप चाहते हैं पाने के लिए:

https://code.google.com/p/simple-r/

कि स्क्रिप्ट का उपयोग करना, तुम सिर्फ लिखने की आवश्यकता । संबंधित आर स्क्रिप्ट देखने के लिए इसे वर्बोज़ मोड (-v) में रखें।

0
data <- read.table(...) 
plot(data$scale,data$serial)