如何删除geom_raster中连续x值之间的空间/间隙

时间:2017-09-04 02:46:57

标签: r ggplot2 heatmap geom-raster

我正在使用一些时频分解的脑电图数据,并希望使用ggplot2生成类似频谱图的图形。但是,我的每个时间点之间都有空格。

Data <- read.csv(url("https://www.dropbox.com/s/al3cygigm86mr3s/Test_Spec_Data.csv?dl=0"))

如果我创建一个vanilla geom_raster,我会在x和y数据中出现间隙:

ggplot(Data,aes(Times,Frequency)) +
  geom_raster(aes(fill = ERSP))

Default

如果我将Frequency作为一个因素,它会填补y差距;但是,沿x轴的间隙仍然存在:

  ggplot(Data,aes(Times,factor(round(Frequency,digits=1)))) +
  geom_raster(aes(fill = ERSP))

With y as factor

我可以通过Times因素消除差距。

enter image description here

但是,使用这么多数据点管理scale_x_discrete很麻烦(请注意x轴标签)。此外,这些时间数据是连续的,而不是真正的因子。

geom_raster没有像width这样的geom_bar参数,我在geom_raster文档中看不到类似内容。

有没有办法让Times保持连续但消除观察之间的差距?

1 个答案:

答案 0 :(得分:1)

存在间隙,因为没有足够的数据(或者更确切地说,它们没有均匀间隔)。

你的因素&#34;转换消除了间隙,因为它删除了数据丢失的X或Y轴部分。在Y轴看:蜱是均匀的空间,但值不是(8.5-8.1 = 0.4,而11.3-10.7 = 0.6,你有最大的差距)。

我可以看到两种解决方案:

  • 插入数据,以便源数据均匀分布
  • 使用geom_tile代替geom_raster,并指定widthheight参数来&#34;展开&#34;你的瓷砖并填补空白,如the fourth example of the doc
  • 中所述