문제

쉼표로 분리 된 파일이 있습니다 foo.csv 다음 데이터를 포함합니다.

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

본질적으로 두 가지 질문이 있습니다.

1) 첫 번째 열 (x 축)과 두 번째 열 (y 축)을 어떻게 표시합니까? 나는 이것을 시도하고있다 (독서에서 이 지역):

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

내가 뭘 잘못하고 있는지 아십니까? ㅏ 빠른 Google 검색 같은 문제가 있지만 관련 답변이없는 다른 사람을 드러냅니다. 업데이트 : 중간에 두 가지 할당 문을 건너 뛰면 잘 작동합니다. 이것이 왜 그런지 아십니까?

두 번째 질문은 첫 번째 후에는 매우 쉽게 이어집니다.

2) y 축의 첫 번째 열 (x 축)과 다른 모든 열을 어떻게 표시합니까? 내가 달리는 첫 번째 문제를 해결하면 매우 쉽다고 가정하지만 R에 약간 새로운 것이므로 여전히 머리를 감싸고 있습니다.

도움이 되었습니까?

해결책

두 줄이 필요하지 않습니다.

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

스케일과 직렬은 이미 헤더에서 설정되어 있습니다. read.table.

또한 scale <- data[1] a에서 요소를 만듭니다 data.frame

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

반면 scale ~로부터 read.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")

아마도 더 좋은 방법이있을 것입니다. 그러나 그것은 나의 현재 R 지식을 넘어선 것입니다 ....

다른 팁

당신의 예에서

plot(scale, serial) 

때문에 작동하지 않습니다 scale 그리고 serial 둘 다 데이터 프레임입니다

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

다음을 시도하고 사용할 수 있습니다 points(), 플롯이 생성되면 나머지 열을 플로팅합니다. 나는 그것을 사용했다 ylim 매개 변수 plot 세 번째 열의 범위를 수용합니다.

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')

나는 R에 새로워 지지만, 한 줄로 다른 모든 열을 하나의 음모로, 쉽고 우아함을 가지고 있다면 :) 인쇄 또는 프레젠테이션을 위해 Hadley Wickham의 패키지 Ggplot2 & Reshape를 사용할 수 있습니다.

설치:

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

예를 그리기 :

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), 축 조정, 모든 라인에 대한 개별 옵션을 설정합니다.

다음으로 연결 온라인 문서.

저는 R 전문가가 아니지만 데이터가 필요하다고 생각합니다 .Frame :

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

그것은 적어도 내 R 설정에 무언가를 플로팅합니다!

Luapyad의 답변에 대한 조언에 따라 나는 이것을 생각해 냈습니다. 헤더 "스케일"으로 이름을 바꿨습니다.

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

그 다음에:

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

이 시도:

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)

간단한 R 방법이 있습니다.

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

해당 스크립트를 사용하면 다음을 입력하면됩니다.

r -cdps, -k1:2 foo.csv

원하는 줄거리를 얻으려면. 해당 R 스크립트를 보려면 Verbose Mode (-v)에 넣으십시오.

data <- read.table(...)
plot(data$scale,data$serial)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top