3

我用ggplot2创建了一个简单的热图,但我需要强制 x 轴刻度线出现在我的 x 变量的末尾,而不是在它的中心。例如,我希望 1 出现在 1.5 现在的位置。我相信在 Base R 中完成的热图会做到这一点。

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 回答