簡體   English   中英

使用 R 中的 slider 的多個數據幀的 Plot 熱圖

[英]Plot heatmaps of multiple data frames using a slider in R

我有多個 data.frames,每一個都代表不同時間點的個人成對交互。

這是我的 data.frames 外觀的示例。

df1 <- matrix(data = rexp(9, rate = 10), nrow = 3, ncol = 3)
df2 <- matrix(data = rexp(16, rate = 10), nrow = 4, ncol = 4)
df3 <- matrix(data = rexp(4, rate = 10), nrow = 2, ncol = 2)

我想 plot 它們,因為它在此頁面中指出( https://plotly.com/r/sliders/ ),其中使用 slider 我可以從另一個熱圖移動。

到目前為止,我已經嘗試過使用 plotly,但我沒有成功。 非常感謝任何幫助。

我在這個問題上掙扎了很長時間。 在這一點上我可能有點盲目,所以如果問題很愚蠢,請原諒我。

https://plotly.com/r/sliders/上的Sine Wave Slider示例之后,可以這樣實現。 我的方法的第一步涉及將矩陣轉換為具有 x、y、z 列的數據幀。 第二而不是線我們 plot 熱圖。

df1 <- matrix(data = rexp(9, rate = 10), nrow = 3, ncol = 3)
df2 <- matrix(data = rexp(16, rate = 10), nrow = 4, ncol = 4)
df3 <- matrix(data = rexp(4, rate = 10), nrow = 2, ncol = 2)

library(tibble)
library(tidyr)
library(plotly)

# Make dataframes
d <- lapply(list(df1, df2, df3), function(d) {
            d %>%
              as_tibble(.colnames = seq(ncol(.))) %>% 
              rowid_to_column("x") %>% 
              pivot_longer(-x, names_to = "y", values_to = "z") %>% 
              mutate(y = stringr::str_extract(y, "\\d"),
                     y = as.numeric(y))
    })

aval <- list()
for(step in seq_along(d)){
  aval[[step]] <-list(visible = FALSE,
                      name = paste0('v = ', step),
                      x = d[[step]]$x,
                      y = d[[step]]$y,
                      z = d[[step]]$z)
}
aval[1][[1]]$visible = TRUE

steps <- list()
fig <- plot_ly()

for (i in seq_along(aval)) {
  fig <- add_trace(fig, x = aval[i][[1]]$x, y = aval[i][[1]]$y, z = aval[i][[1]]$z, visible = aval[i][[1]]$visible, 
                   name = aval[i][[1]]$name, type = "heatmap")
  fig
  step <- list(args = list('visible', rep(FALSE, length(aval))), method = 'restyle')
  
  step$args[[2]][i] = TRUE  
  steps[[i]] = step
}

fig <- fig %>%
  layout(sliders = list(list(active = 0,
                             currentvalue = list(prefix = "Heatmap: "),
                             steps = steps)))
fig

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM