【问题标题】:How can I remove space/gaps between continuous x-values in geom_raster如何删除 geom_raster 中连续 x 值之间的空间/间隙
【发布时间】:2017-09-04 02:46:56
【问题描述】:

我正在处理一些时间频率分解的脑电图数据,并希望使用 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 保持连续但消除观察之间的差距?

【问题讨论】:

    标签: r ggplot2 heatmap geom-raster


    【解决方案1】:

    因为没有足够的数据(或者更准确地说,它们的间距不均匀),所以存在间隙。

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

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

    • 插值数据,使您的源数据均匀分布
    • 使用geom_tile 代替geom_raster 并指定widthheight 参数以“扩展”您的图块并填充空白,如the fourth example of the doc 中所述。

    【讨论】: