2014-12-11 2 views
3

조건에 컬러 스케일은 다음과 같습니다ggplot2 히트 맵, 나는 R. 내 테이블에 ggplot의 규모의 색상을 변경해야

library(ggplot2) 
library(reshape2) 
tt_melt <- melt(tt) 
tt_melt 
colnames(tt_melt)<-c('fila', 'columna', 'performance') 

:

tt<-data.frame(C1=c(0.4,.5,.5, 0, .8,.8),C2=c(.5,.6,.7, 0, .7,.8), C3=c(.8,.7,.9, 0, .8,.7), 
    C4=c(rep(0,6)), C5=c(0.4,.6,.6, 0, .8,.8),C6=c(0.8,.7,.5, 0, .8,.8), C7=c(0.8,.6,.4, 0, .8,.8)) 

row.names(tt)<-paste("F", 1:6, sep='') 
tt<-as.matrix(tt) 

가 그럼 난 모양 변경을 내 그래프는 각 위치와 관련된 콜센터 및 측정 항목을 나타냅니다.

ggplot(data=tt_melt, 
     aes(x=columna, y=fila, fill=performance)) + geom_tile() + 
    geom_text(aes(label=performance), color='white') 
+ theme_minimal(base_size = 12, base_family = "")+ 
labs(title = 'Performance por posicion en el call')+ 
    scale_colour_manual(values = c("red","yellow", "green")) 
scale_fill_gradient(low = "yellow", high = "darkgreen") 

enter image description here

그러나 척도는 사용되지 않습니다. 흰색으로 0을 가져와야합니다 (그 공간에 아무도 없다는 것을 의미하기 때문에). 나머지는 빨간색에서 녹색으로. 따라서 진정한 연속 척도는 아닙니다 (그러나 계속 빨간색에서 녹색으로 이어져야합니다). ggplot을 저울로 만들려면 어떻게해야합니까? 또한 값 위에 조건이있는 눈금을 만들려면 어떻게해야합니까? 그리고 마지막으로, 이것을 할 수있는 더 좋은 방법이 있다면 그것에 대해 듣게되어 기쁩니다. 많은 감사합니다.

답변

3

코드 서식이 SO 붙여 넣기의 아티팩트가 되었기를 바랍니다. 나는 더 많은 구조화 된 ggplot 빌드를 선호한다. 당신은 prbly 컬러 브루을 공격한다

library(ggplot2) 
library(reshape2) 

tt <- data.frame(C1=c(0.4,.5,.5, 0, .8,.8), 
       C2=c(.5,.6,.7, 0, .7,.8), 
       C3=c(.8,.7,.9, 0, .8,.7), 
       C4=c(rep(0,6)), 
       C5=c(0.4,.6,.6, 0, .8,.8), 
       C6=c(0.8,.7,.5, 0, .8,.8), 
       C7=c(0.8,.6,.4, 0, .8,.8)) 

row.names(tt) <- paste("F", 1:6, sep='') 
tt <- as.matrix(tt) 

tt_melt <- melt(tt) 
colnames(tt_melt) <- c('fila', 'columna', 'performance') 

tt_melt$cut <- cut(tt_melt$performance, 
        breaks=c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0), 
        labels=as.character(c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9)), 
        include.lowest=TRUE) 

perf_cols <- c("white", colorRampPalette(c("red", "green"))(9)) 
perf_text_cols <- c("black", rep("white", 9)) 

gg <- ggplot(data=tt_melt, aes(x=columna, y=fila, fill=cut)) 
gg <- gg + geom_tile() 
gg <- gg + geom_text(aes(label=performance, color=cut)) 
gg <- gg + labs(title = 'Performance por posicion en el call') 
gg <- gg + coord_equal() 
gg <- gg + scale_colour_manual(values = perf_text_cols) 
gg <- gg + scale_fill_manual(values=perf_cols) 
gg <- gg + theme_minimal(base_size = 12, base_family = "") 
gg <- gg + theme(legend.position="none") 
gg 

enter image description here

및 램프를 변경 :

귀하는 별도의 휴식을 생성하는 경우 훨씬 더 제어 할 수 있습니다. 또한이 방법을 사용하면 텍스트가 흰색 타일에 표시되도록 할 수 있습니다. 또한 coord_equal은 높이/너비로 재생하지 않아도됩니다. geom_tilecolor (비 aes) 매개 변수를 추가하여 타일에 테두리를 추가 할 수도 있습니다.

은 원래처럼 비 aes 색상을 사용했다, (당신의 코멘트를 당) 백색 0 값을 유지하려면

gg <- ggplot(data=tt_melt, aes(x=columna, y=fila, fill=cut)) 
gg <- gg + geom_tile() 
gg <- gg + geom_text(aes(label=performance), color="white") 
gg <- gg + labs(title = 'Performance por posicion en el call') 
gg <- gg + coord_equal() 
gg <- gg + scale_fill_manual(values=perf_cols) 
gg <- gg + theme_minimal(base_size = 12, base_family = "") 
gg <- gg + theme(legend.position="none") 
gg 

enter image description here

+0

감사합니다! 이제 그래프의 0 레이블을 지우고 나머지는 그대로 두십시오. 이걸 도와 주실 수 있습니까? – GabyLP

+1

아, 색상을 '흰색'으로 변경하십시오. 실제로 0 레이블이 필요하다고 가정했습니다. 나는 그것을 반영하기 위해 답을 업데이트했다. – hrbrmstr

+0

감사합니다 !!! 정확히 내가 원했던 걸! 간단하지만 완전한 ggplot 튜토리얼을 추천 할 수 있습니까? – GabyLP

1

보십시오 : 코드에서

ggplot(data=tt_melt, aes(x=columna, y=fila, fill=performance))+ 
    geom_tile()+ 
    geom_text(aes(label=performance), color='white') + 
    theme_minimal(base_size = 12, base_family = "")+ 
    labs(title = 'Performance por posicion en el call')+ 
    scale_colour_manual(values = c("red","yellow", "green"))+ 
    scale_fill_gradient(low = "yellow", high = "darkgreen") 

enter image description here

만이 입력 된 실수. ggplot 코드에서 다음 줄을 계속하려면 줄 끝에 '+'기호가 있어야합니다.