2012-05-22 3 views
1

ggplot2으로 간단한 히트 맵 그래프를 만들었지 만, x 축 눈금이 내 x 변수의 끝 부분에 나타나도록 강제해야합니다. 예를 들어, 1.5가 현재 위치에 1이 나타날 것으로 예상합니다. 나는베이스 R에서 행해진 히트 맵을 믿을 것이다. enter image description here히트 맵 그래프의 막대 끝에 x 축 눈금을 표시하려면 어떻게합니까?

이 그래프의 눈금 대신 그 중심

을의 바의 끝 부분에 배치됩니다 :

enter image description here

library(car) #initialize libraries 
library(ggplot2) #initialize libraries 
library(reshape) 

df=read.table(text= "x y fill 
1 1 B 
2 1 A 
3 1 B 
1 2 A 
2 2 C 
3 2 A 
", header=TRUE, sep="" ) 

#plot data 
qplot(x=x, y=y, 
     fill=fill, 
     data=df, 
     geom="tile")+ 
     scale_x_continuous(breaks=seq(1:3)) 
아이디어는 다음과 같습니다 간단한 히트 맵을 만드는 것입니다

답변

4

어떨까요?

object = qplot(x=x, y=y, 
     fill=fill, 
     data=df, 
     geom="tile")+ 
     scale_x_continuous(breaks=seq(1:3)) 

object + scale_x_continuous(breaks=seq(.5,3.5,1), labels=0:3) 

enter image description here

+0

@SandyMuspratt 풍어를 사용하여. 감사! – Alex

+0

감사합니다 !!! 나는 x 스케일을 조정하지 않고 그것을 할 수있는 옵션이 있었으면 좋겠지 만 heatmap이 작동하는 방식을 이해하지 못하는 것이 가능할 수 있습니다. 당신의 도움에 감사드립니다 –

+0

x 규모를 조정하지 않음으로써 무엇을 의미합니까? 0에서 시작하는 대신에 적절한 값인 0.5에서 시작하고 싶습니까? – Alex

3

geom_tile 센터 주어진 좌표에서 각 타일. 그러므로 당신은 그것이주는 결과물을 기대할 것입니다.

따라서 ggplot에 각 셀의 중심점 (오른쪽 위 모서리 좌표가 아닌)을 지정하면 작동합니다.

ggplot(df, aes(x = x-0.5, y = y-0.5, fill = fill)) + 
    geom_tile() + 
    scale_x_continuous(expand = c(0,0), breaks = 0:3) + 
    scale_y_continuous(expand = c(0,0), breaks = 0:3) + 
    ylab('y') + 
    xlab('x') 

또는 qplot

qplot(data = df, x= x-0.5, y = y-0.5, fill = fill, geom = 'tile') + 
    scale_x_continuous(expand = c(0,0), breaks = 0:3) + 
    scale_y_continuous(expand = c(0,0), breaks = 0:3) + 
    ylab('y') + 
    xlab('x')