2013-08-14 1 views
0

윤곽선 형태로 변수의 함수로 비닝 된 데이터를 플롯하려고합니다. 그러나 R이 데이터 구조를 처리하는 방식에 여전히 익숙하지 않아서 고생하고 있습니다. 내 데이터를 플로팅 할 준비가 된 형태로 강요합니다.윤곽 그리기에 적합한 데이터 조작

x <- as.numeric(c(-2,-1,0,1,2,3,4,5,6,7,8,10,15,20,30)) 
y <- head(logspace(-3.6,-1.7,15),-1) + diff(logspace(-3.6,-1.7,15)) 
z <- list(c(seq.int(30,1,length.out=15)),c(seq.int(35,1,length.out=15)),c(seq.int(40,1,length.out=15)),c(seq.int(45,1,length.out=15)),c(seq.int(50,1,length.out=15)),c(seq.int(60,1,length.out=15)),c(seq.int(55,1,length.out=15)),c(seq.int(50,1,length.out=15)),c(seq.int(40,1,length.out=15)),c(seq.int(30,1,length.out=15)),c(seq.int(20,1,length.out=15)),c(seq.int(10,1,length.out=15)),c(seq.int(10,1,length.out=15)),c(seq.int(10,1,length.out=15))) 
names(z) <- paste("x", 1:14, sep = "") 

따라서 당신은 것입니다 :

X1 Z1 Y1 
X2 Z2 Y2 
X3 Z3 Y3 
X4 Z4 Y4 
Xn Zn Yn 

은 현재 내가 형태로 데이터가 : 나는 (격자를 사용하는 경우, 예를 들어) 형태의 dataframe 것 내 데이터를 가지고 간단한 형식을 의심 두 개의 숫자 데이터 형식 (x 및 y 차원)과 y와 같은 길이의 목록에있는 z 값을 참조하십시오. 목록에는 x와 동일한 길이의 숫자 데이터 양식이 들어 있습니다. 예를 들면 다음과 같습니다 (? 아마도 "다음 mydata"라는 dataframe에)

length(x) 
[1] 15 
length(y) 
[1] 14 
length(z) 
[1] 14 
length(z$x1) 
[1] 15 

그래서 내 아주 기본적인 질문은 형태에 적합한이 데이터를 강요하는 가장 좋은 방법이 될 것 인 것이다 그 명령과 같은 :

require(lattice) 
contourplot(z ~ x * y, data = mydata) 

은 플롯을 생성합니까?

+0

'z'값이 충분하지 않습니다. 각 격자 위치에 대한 값이 필요하므로 'length (x) * length (y)'값이 필요합니다. 올바른 데이터 값을 얻으면,'contourplot'을위한'formula' 메쏘드를 사용하거나 행렬에'z'를 만들고'row.values'와'column.values'를'x'로 정의하고 'y'. –

+0

안녕하세요 carl, 주석 주셔서 감사하지만 아직도 내 눈을 오히려 혼란 스러워요 차원은 올바른지 - 나는 15 x 값, 14 y 값을 가지고 z는 14 목록의 각 15 값이 있습니다. 어떤 점에서 저는 이것을 손으로 그릴 수 있습니다. 그리하여 각 그리드 위치에 어떤 가치가 없는가? – user1912925

+0

죄송합니다. 'z'가 무엇을 포함하고 있는지 명확하지 않았습니다. 나는'newz <-matrix (unlist (z), nrow = length (y))'(또는'nrow = length (x)')가'newz'라는 행렬을 줄 것이라고 믿는다. y 값. –

답변

0

z의 형식이 잘못되었습니다. 가장 쉬운 방법은 각 관찰에 대해 하나의 행을 포함하는 data.frame을 만드는 것입니다.

my.data.frame <- expand.grid(x = 1:15, y = 1:14) 
my.data.frame$z <- with(my.data.frame, x ^2 + x + x * y + y^2 + y) 
library(lattice) 
contourplot(z ~ x * y, data = my.data.frame)