Я строю матрицу с использованием heatmaply и плотно. Я хочу, чтобы высота и ширина plotylOutput реагировали на размер матрицы
Если я использую реактивное значение в аргументе plotlyOutput width, я получаю следующую ошибку : Ошибка в htmltools :: validateCssUnit: CSS единицами должна быть одноэлементная цифра c или символьный вектор
. Ниже приведена минимальная версия моего кода:
library(shiny)
library(heatmaply)
library(plotly)
ui <- tags$div(id = "placeholderimage", uiOutput("plotlyimage"))
server <- shinyServer(function(input, output, session) {
matsample <- reactive({cbind(c("A","A","A","T"),c("A","A","A","T"),c("A","A","A","G"))})
ranges <- reactiveValues(width_im = NULL,height_im=NULL)
ranges$width_im <- reactive(ncol(matsample())*20)
ms <- reactive({
alph <- c("A"=1, "C"=2, "G"=3, "T"=4, "-"=5, "N"=6, "S"=7)
ms <- matrix(alph[matsample()], ncol = ncol(matsample()), byrow=FALSE))
rownames(ms) <- rownames(matsample())
return(ms)
})
mm <- reactive({
data.frame(do.call(rbind, lapply(rownames(ms()), rep, ncol(matsample()))))
})
output$matimage <- renderPlotly({
heatmaply(ms(), custom_hovertext = mm(),
cellnote = matsample(),cellnote_size = 6,
cellnote_textposition = "middle center",
fontsize_col = 6,grid_gap = 1,grid_size = 0.01,
show_dendrogram = c(FALSE, FALSE),
Rowv=NULL, Colv=NULL, color=rainbow(7),
hide_colorbar=FALSE, plot_method = "plotly")
})
output$plotlyimage <- renderUI(
tags$div(class="superbigimage",
plotlyOutput("testplot", **width = isolate(ranges$width_im)**)
)
})
Этот код в настоящее время выдает ошибку из-за width = isolate (диапазоны $ width_im), как я могу сделать ширину реагирующей на размер матрицы? Обратите внимание, что моя настоящая работа имеет матрицы с более чем 600 столбцами