如何删除 geom_raster 中连续 x 值之间的 space/gaps

How can I remove space/gaps between continuous x-values in geom_raster

我正在处理一些时频分解的 EEG 数据,并想使用 ggplot2 生成类似频谱图的图形。但是,我最终在每个时间点之间都有空格。

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

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

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

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

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

我可以通过使 Times 成为一个因素来消除差距。

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

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

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

因为没有足够的数据(或者更准确地说,它们不是均匀分布的),所以有差距。

您的 "factor" 转换删除了间隙,因为它删除了缺少数据的 X 或 Y 轴部分。在 Y 轴上看:刻度是均匀的空间,但值不是(8.5-8.1=0.4,而 11.3-10.7=0.6,你有最大的差距)。

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

  • 插值数据,使源数据均匀分布
  • 使用 geom_tile 而不是 geom_raster 并指定 widthheight 参数到 "expand" 你的瓷砖并填补空白,如 the fourth example of the doc.