dyLegend 在 shiny-app 中左对齐

dyLegend align left within a shiny-app

我想将 dygraph 的图例放在绘图左侧的 shiny 应用程序中(在 dygraph 中)。我的问题是我无法设置 dygraph 的绝对宽度,因为该应用程序在具有不同分辨率的不同屏幕上运行。

代码可能是这样的:

ui.r:

library(dygraphs)
shinyUI(fluidPage(
  titlePanel("Simple example"),
  sidebarLayout(
    sidebarPanel(),
  mainPanel(
    dygraphOutput("dygraph")
  )
 )
))

server.r

library(dygraphs)
shinyServer(function(input, output, session) {
 output$dygraph <- renderDygraph({
  dygraph(discoveries)
 })
})

有没有办法得到 dygraphwidth?或者可能是将图例与左侧对齐的更简单的解决方案?

一种方法是使用 column 并选择 1 到 12 之间的宽度。这是 ui.R 代码,其中 2 用于图例,10 用于 dygraph。

library(dygraphs)
shinyUI(fluidPage(
    titlePanel("Simple example"),
    sidebarLayout(
        sidebarPanel(),
        mainPanel(
            column(2,
                h3("My Legend")
            ),
            column(10,
                dygraphOutput("dygraph")
            )
        )
    )
))

如果要将图例对齐到左上角,则可以使用以下 CSS:

.dygraph-legend {
  left: 70px !important;
  background-color: transparent !important;
} 

您也可以使用 tableHTML::make_css:

轻松地将其添加到您的代码中
library(shiny)
library(tableHTML)
library(dygraphs)
ui <- shinyUI(fluidPage(
 tags$style(make_css(list('.dygraph-legend', 
                          c('left', 'background-color'), 
                          c('70px !important', 'transparent !important')))),
 titlePanel("Simple example"),
 sidebarLayout(
  sidebarPanel(),
  mainPanel(
   dygraphOutput("dygraph", width = '80%')
  )
 )
))

server <- shinyServer(function(input, output, session) {
 output$dygraph <- renderDygraph({
  lungDeaths <- cbind(mdeaths, fdeaths)
  dygraph(lungDeaths)
 })
})

shinyApp(ui = ui, server = server)

如果你想改变 dygraph 容器的宽度,你可以使用 dygraphOutput

中的参数 width