根据 R 中的数字序列绘制小波相干性

问题描述 投票:0回答:1

我在一个文本文件中有多个数字序列,每个序列由数字 1 到 8 组成。序列中的数字用空格分隔,而每个新序列都带有换行符。

数据:可以假设文本文件“Sequences.txt”具有以下 4 个序列(可能有不同的长度):

6 6 3 8 3 2 8 6 1 7 3 7 6 8 2 8 2 6 8 8 1 1 4 3 6 4 3 4 6 7

6 1 8 7 8 1 2 6 8 3 4 3 5 4 2 2 1 1 1 4 5 5 4 5 5 5 7 7 4 4 3 2 8 7 7

4 5 5 7 7 3 7 8 7 8 2 2 8 2 8 1 1 1 7 7 7 4 4 4

1 4 4 1 1 8 8 1 8 1 1 1 1 5 5 6 6 7 3 3 8 2 3 4 3 8 3 4 5 4 5 2 3 5 7

我需要的是使用 R 绘制下图中所示的那种图。这里,每个序列排列成一行,并且序列一个一个地堆叠在另一个下面。

从文献来看,它看起来像小波图,尽管我不确定。

确实可以使用帮助来完成此任务(已经尝试了一些软件包,包括 biwavelet、sowas)。没有在这里展示我的尝试,因为我已经在另一个问题中发布了它。使用 R 4.2.1.

r time-series wavelet wavelet-transform biwavelet
1个回答
0
投票

数据中似乎没有太多模式,但您可以按如下方式提取并绘制它:

library(tidyverse)

readLines("Sequences.txt") %>%
  strsplit(" ") %>%
  lapply(as.numeric) %>%
  lapply(\(x) c(x, rep(NA, max(lengths(.)) - length(x)))) %>%
  as.data.frame() %>%
  setNames(seq_along(.)) %>%
  cbind(x = seq(nrow(.))) %>%
  pivot_longer(-x, names_to = "y", values_to = "z") %>%
  mutate(y = as.numeric(y)) %>%
  ggplot(aes(x, y, fill = z)) +
  geom_raster() +
  scale_fill_distiller(palette = "Spectral", na.value = "white")

© www.soinside.com 2019 - 2024. All rights reserved.