2013-02-12 1 views
3

내가로부터 그림 6.11을 복제하려고 러브 공간에서 R 색을 나타내는 해들리 위컴의 ggplot2 book; 점의 색깔은 그 자체를 나타내며 전설은 필요하지 않습니다.Luv 색상을 플로팅; ggplot2 책에서 그림 6.11 복제

library(colorspace) 
myColors <- data.frame("L"=runif(10000, 0,100),"a"=runif(10000, -100, 100),"b"=runif(10000, -100, 100)) 
myColors <- within(myColors, Luv <- hex(LUV(L, a, b))) 
myColors <- na.omit(myColors) 
g <- ggplot(myColors, aes(a, b, color=Luv), size=2) 
g + geom_point() + ggtitle ("mycolors") 

enter image description here

두 번째 시도 :

other <- data.frame("L"=runif(10000),"a"=runif(10000),"b"=runif(10000)) 
other <- within(other, Luv <- hex(LUV(L, a, b))) 
other <- na.omit(other) 
g <- ggplot(other, aes(a, b, color=Luv), size=2) 
g + geom_point() + ggtitle("other") 

enter image description here

분명 문제가 몇 가지 있습니다 enter image description here

여기에 두 개의 시도이다 s :

  1. 이 그래프는 그림과 유사하지 않습니다. 에 대한 제안이 필요합니까?
  2. 첫 번째 시도는 Luv 열에 많은 NA 필드를 생성합니다 (두 번째 실행 에서 9950 개보다 10,000 개 실행시 ~ 3100 개의 이름 지정된 색상 만 생성 함). L은 0 ~ 100 사이 U -100과 100 사이의 V , 왜 내가 처음 실행에 많은의 NA가 있나요 될 것으로 예상되는 경우? 반올림을 시도했지만 도움이되지 않습니다.
  3. 이유는 전설이 있습니까?

감사합니다.

답변

5

aes(color = Luv)에 "Luv 열의 각 고유 문자열에 색상 지정"이라고 표시되어 이상한 색상이 나타납니다. 당신이 아래 aescolor 외부를 할당하면, 그것은 "이 명시 적 색상을 사용"를 의미한다. 나는 이것과 비슷한 것이 당신이 제시 한 모습에 가깝다고 생각합니다.

require(colorspace) 
x <- sRGB(t(col2rgb(colors()))) 
storage.mode([email protected]) <- "numeric" # as(..., "LUV") doesn't like integers for some reason 
y <- as(x, "LUV") 
DF <- as.data.frame([email protected]) 
DF$col <- colors() 
ggplot(DF, aes(x = U, y = V)) + geom_point(colour = DF$col) 
+0

을의 그, 감사합니다! – koenbro

+3

또는 더 나은, 사용' – hadley

+0

@hadley을 scale_colour_identity'. 어떻게해야할지 모르겠다. 'ggplot (DF, aes (x = U, y = V, fill = colors())) + geom_point() + scale_color_identity()'가 작동하지 않습니다. 작은 재현 가능한 예를 보여줄 수 있습니까? 감사합니다 – koenbro

관련 문제