2012-05-22 57 views
1

我創建了一個簡單的熱圖圖ggplot2但我需要強制x軸刻度線出現在我的x變量的末尾,而不是其中心。例如,我希望1出現在現在1.5的位置。我相信在Base R完成的熱圖將做到這一點。如何強制X軸刻度線出現在熱圖圖形的條尾?

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)) 

enter image description here

的想法是創建一個簡單的熱圖,看起來像這樣: enter image description here

在此圖中的刻度線放置在酒吧,而不是其中心

結束

回答

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比例的情況下進行,但是我可能不太瞭解熱圖的工作方式。我很感謝你的幫助 –

+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')