2013-05-17 2 views
1

2 차원 플롯이 있습니다. 그 위에있는 모든 포인트는 0에서 1까지의 값 (예 : y)을가집니다. 색상을 사용하여 플롯에이 값을 표시하고 싶습니다. 예를 들어 어떤 점의 값이 0.25보다 작 으면 이어야하고 0.250.5 사이의 값을 갖는 점은 yellow이고 나머지는 red입니다. R에서이를 수행하는 방법. 다음은 (i,j)으로 표시된 다양한 지점에 대해 y을 생성하는 코드입니다.색을 입히는 방법 R

library(reldist) 
i <- 0 
for(i in seq(from=0, to=.8, by=0.1)){ 
j <- 0 
for(j in seq(from=0, to=1, by=0.1)){ 

a <- evalq(i*(1+i^2-i^2*j)/((1+i)^2*(1+i^2))) 
b <- evalq(i*(1-j)/(1+i)) 
c <- evalq(((1-j)/(1+i))-i*(1+i^2-i^2*j)/((1+i)^2*(1+i^2))) 

x <- c(a,b,c) 
y <- gini(x) # i want to plot y 
print(y) 

} 
} 
+0

오히려 포인트 이상의 선으로 데이터를 플롯하려는 경우, 당신은 (면책 plotrix''에서'clplot' 도구를 사용할 수 있습니다 - 나는 그 도구를 썼다.) –

답변

1

plot(y , col = ifelse(y < 0.25 , 'green', ifelse(y < 0.5 , 'yellow' , 'red'))) 
1

당신은 인덱스 색상 당신이 cut() 기능을 사용하여 원하는 것을 새로운 변수를 정의 할 수 있습니다보십시오. 예 :

# I created an example i, j, and y rather than using your code for simplicity 
df <- expand.grid(i=seq(0, 0.8, 0.1), j=seq(0, 1, 0.1)) 
y <- runif(dim(df)[1]) 

# define the colors you want 
mycol <- c("green", "yellow", "red") 

# define a color index based on y using the breaks you want 
yindex <- cut(y, c(0, 0.25, 0.5, 1), labels=FALSE) 

# scatterplot using the specified colors 
plot(df$i, df$j, col=mycol[yindex]) 
0

결과를 행렬로 사용하려면 outer을 사용하십시오. for 루프보다 쉽습니다. 플로팅 사용 image

i <- seq(from=0, to=.8, by=0.1) 
j <- seq(from=0, to=0.9, by=0.1) 

res <- outer(i,j,FUN=Vectorize(function(i,j) { 
    require(reldist) 
    a <- i*(1+i^2-i^2*j)/((1+i)^2*(1+i^2)) 
    b <- i*(1-j)/(1+i) 
    c <- ((1-j)/(1+i))-i*(1+i^2-i^2*j)/((1+i)^2*(1+i^2)) 
    gini(c(a,b,c)) 
}) 
) 

:

image(res, breaks = c(-1000,.25,.5,1000),col = c("green","yellow","red"), 
     axes=FALSE,xlab="i",ylab="j") 
axis(1, at = seq(0,1,length.out=length(i),labels=i) 
axis(2, at = seq(0,1,length.out=length(j),labels=j) 

enter image description here

관련 문제