У меня есть 10 матриц, каждая из которых представляет собственные значения матриц корреляции вейвлет-коэффициентов ряда временных рядов.
Я хотел бы создать тепловую карту моих данных, чтобы увидеть, есть ли какие-либо перекрывающиеся важные события в разных масштабах.
До сих пор я собрал следующее изображение, используя графический пакет, как описано здесь от @Josliber.
Я все еще разбираюсь с R, так что извините за неприятный код, но пока он работает для меня. Мне еще предстоит возиться с метками и форматированием, но это быстрое и грязное представление.
#plotting the eigenvalues for each of the wavelet coefficient scales
w1mat <- matrix(w1eigen[1,])
w2mat <- matrix(w2eigen[1,])
w3mat <- matrix(w3eigen[1,])
w4mat <- matrix(w4eigen[1,])
w5mat <- matrix(w5eigen[1,])
w6mat <- matrix(w6eigen[1,])
w7mat <- matrix(w7eigen[1,])
w8mat <- matrix(w8eigen[1,])
w9mat <- matrix(w9eigen[1,])
w10mat <- matrix(w10eigen[1,])
#plots the eigenvalues for each of the scales
par(mfrow=c(10,1))
imageW1 <- image(w1mat)
imageW2 <- image(w2mat)
imageW3 <- image(w3mat)
imageW4 <- image(w4mat)
imageW5 <- image(w5mat)
imageW6 <- image(w6mat)
imageW7 <- image(w7mat)
imageW8 <- image(w8mat)
imageW9 <- image(w9mat)
imageW10 <- image(w10mat)
Как вы можете видеть, я использовал функцию изображения в графическом пакете, чтобы создать это, и я уверен, что смогу добиться того же в ggplot с большим контролем.
В конечном счете, я хочу создать график, подобный приведенному ниже, где есть общая ось Y, и они сидят прямо друг над другом без пробелов.
Что я хотел бы знать, так это то, является ли использование функции сложенного изображения в графике лучшим подходом или есть лучший способ визуализации данных в альтернативном пакете?
heatmap
. Попробуйтеheatmap(matrix(rnorm(1000),nrow=10))
например. Вы можетеrbind
ваши матрицы вместе. Быстрый и грязный способ:rbind(matrix(w1eigen[1,]), matrix(w2eigen[1,], matrix[w3eigen[1,], ...)
....
вот где я обленился. - person CPak   schedule 15.06.2017do.call
для таких вещей. - person IRTFM   schedule 15.06.2017