Как я могу удалить пробелы / пробелы между непрерывными значениями x в geom_raster

Я работаю с некоторыми частотно-разложенными данными ЭЭГ и хочу получить диаграмму, похожую на спектрограмму, используя 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 фактор, он заполняет разрыв у; но промежутки вдоль оси x остаются:

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

С у в ​​качестве фактора

Я могу устранить пробелы, сделав Times фактор.

Но, управляя scale_x_discrete с таким количеством точек данных громоздко (обратите внимание на метки оси X). Кроме того, эти временные данные являются непрерывными и не очень похожими на факторы.

geom_raster не имеет width аргумент как geom_bar и я не вижу ничего похожего в geom_raster документация.

Есть ли способ сохранить Times как непрерывно, но устранить разрывы между наблюдениями?

1 ответ

Решение

Есть пробелы, потому что данных недостаточно (или, точнее, они не расположены равномерно).

Ваше "факторное" преобразование устраняет разрыв, потому что оно удаляет части оси X или Y, где отсутствуют данные. Посмотрите по оси Y: тики - это ровные пробелы, а значения - нет (8,5-8,1=0,4, а 11,3-10,7=0,6, где у вас самый большой разрыв).

Я вижу два решения:

  • Интерполируйте данные, чтобы ваши исходные данные были равномерно распределены
  • использование geom_tile вместо geom_raster и указать width а также height Параметры для "расширения" ваших плиток и заполнения пробелов, как объяснено в четвертом примере документа.
Другие вопросы по тегам