3

ggplot2を使用して単純なヒートマップグラフを作成しましたが、x軸の目盛りをx変数の中央ではなく、最後に表示するように強制する必要があります。たとえば、現在1.5の位置に1が表示されると思います。BaseRで作成されたヒートマップがそれを行うと私は信じています。

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

2 に答える 2

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)

ここに画像の説明を入力してください

于 2012-05-22T22:33:08.217 に答える
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')
于 2012-05-23T00:27:20.627 に答える