2016-06-28 3 views
0

제공된 아주 좋은 예인 here에이어서 필자는 다음과 같은 윤곽 플롯을 작성하려고했습니다.ggplot2에서 범례의 불연속 색상 순서를 변경하는 방법

x<-seq(1,11,.03)     # note finer grid 
y<-seq(1,11,.03) 
xyz.func<-function(x,y) {(x^2+y^2)} 
gg <- expand.grid(x=x,y=y) 
gg$z <- with(gg,xyz.func(x,y))  # need long format for ggplot 
brks <- cut(gg$z,breaks=c(1, 2, 5, 10, 30, 50, 100, 200)) 
brks <- gsub(","," - ",brks,fixed=TRUE) 
gg$brks <- gsub("\\(|\\]","",brks) # reformat guide labels 
ggplot(gg,aes(x,y)) + 
    geom_tile(aes(fill=brks))+ 
    scale_fill_manual("Z",values=brewer.pal(7,"YlOrRd"))+ 
    scale_x_continuous(expand=c(0,0))+ 
    scale_y_continuous(expand=c(0,0))+ 
    coord_fixed() 

결과는 다음과 같습니다

Not what I expected

건이며, 윤곽이없는 값을 오름차순으로 알파벳 순으로 분류되어 있습니다.

어떻게 z 값을 오름차순으로 색상의 순서를 변경 하시겠습니까?

처음에는 값 앞에 "0"을 추가하는 방법에 대해 생각했습니다. 나는 다음과 같이 시도했다.

brks <- gsub(pattern = "(\b[0-9]\b)", replacement = "0$1", x = brks) 

그러나 작동하지 않는다.

또한, 그것은 단지 하나의 숫자 앞에 하나의 제로를 추가, 100은 여전히 ​​001 - 002보기 아름다운하지 않는 사실 02.

전에, 나는이 해결 완전히 만족 아니에요 것 .

답변

1

은 휴식 정렬 된 요소 확인 :

x<-seq(1,11,.03)     # note finer grid 
y<-seq(1,11,.03) 
xyz.func<-function(x,y) {(x^2+y^2)} 
gg <- expand.grid(x=x,y=y) 
gg$z <- with(gg,xyz.func(x,y))  # need long format for ggplot 

brks <- cut(gg$z,breaks=c(1, 2, 5, 10, 30, 50, 100, 200), ordered_result = T) 
levels(brks) <- gsub(","," - ", levels(brks), fixed=TRUE) 
levels(brks) <- gsub("\\(|\\]","", levels(brks)) 

gg$brks <- brks # reformat guide labels 
ggplot(gg,aes(x,y)) + 
    geom_tile(aes(fill=brks))+ 
    scale_fill_manual("Z",values=brewer.pal(7,"YlOrRd"))+ 
    scale_x_continuous(expand=c(0,0))+ 
    scale_y_continuous(expand=c(0,0))+ 
    coord_fixed() 
관련 문제