R闪亮错误:html工具中的错误:: validateCssUnit(height); CSS单位必须是单元素数字或字符向量

时间:2018-02-12 00:13:34

标签: r shiny

我正在学习使用R闪亮,我正在尝试创建一个热图,允许用户在plotlyOutput中指定高度,以防止标签聚集在一起。我的最小工作代码:

library(shiny)
library(plotly)

ui <- fluidPage(

titlePanel("Heatmap"),
sidebarLayout(
sidebarPanel(
  sliderInput("mapHeight", 
              "Heatmap Height", 
               min = 500, 
               max = 1000,
               value =500),
  sliderInput("L", "left adjust", min = 0, max =900, value = 80)
  ),
  mainPanel(plotlyOutput("heatmap"))
  )
  )

server <- function(input, output) {

 output$heatmap <- renderPlotly({ 
 p<- heatmaply(mtcars, plot_method = "plotly")%>% 
  layout(margin = list(l = input$L, r =50 , t=0, b=90))
 #not sure why this is being ignored
 ggplotly(p, height = input$mapHeight)
 })
 }

shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:2)

约束与heatmaply包相关,下面的解决方案是暂时的,而plotly继续接受height中的layout参数。

  

警告:现在不推荐在layout()中指定宽度/高度。   请在ggplotly()或plot_ly()

中指定

您可以通过他们的GitHub与开发人员联系,并根据您提议的更改提出并发布或更好地提取请求。目前,下面的解决方案适用于Plotly 4.7.1。

app.R

library(shiny)
library(heatmaply)

ui <- fluidPage(

  titlePanel("Heatmap"),
  sidebarLayout(
    sidebarPanel(
      sliderInput("mapHeight", "Heatmap Height",
                  min = 500, max = 1000, value = 500),
      sliderInput("L", "left adjust", min = 0, max = 900, value = 80)
    ),
    mainPanel(plotlyOutput("heatmap"))
  )
)

server <- function(input, output) {

  output$heatmap <- renderPlotly({

    heatmaply(mtcars) %>%
      layout(margin = list(l = input$L, r = 50, t = 0, b = 90),
             height = input$mapHeight)

  })
}

shinyApp(ui = ui, server = server)