5

我正在处理一些时频分解的 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))

以 y 为因子

Times我可以通过制作一个因素来消除差距。

在此处输入图像描述

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

geom_raster没有width类似的论点,我在文档geom_bar中看不到任何类似的东西。geom_raster

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

4

1 回答 1

3

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

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

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

  • 插值数据,使您的源数据均匀分布
  • 使用geom_tile代替geom_raster并指定widthheight参数来“扩展”您的图块并填补空白,如doc 的第四个示例中所述
于 2017-09-04T09:00:16.273 回答