2017-08-09 17 views
0

私はいくつかdygraphsをプロットしているこの光沢のあるアプリを持っています。残念ながら、私はどのくらいのプロットがplottetになるのか分かりません。それは時々異なるかもしれません。そこで、私はuiOutputrenderUIを使って、プロット数に反応するアプリケーションを作成しました。 Is there a way to add legend next to a dygraph in R, not exactly on the plot?dygraphs凡例外のプロット複数のプロットの光沢のあるアプリ

私の問題は、伝説の<div>要素はものと同じ高さを持っていないということになりました:https://shiny.rstudio.com/articles/dynamic-ui.html

は、今私はここに示されたように各プロットの外に各dygraphの凡例を表示するwnatを参照してください。プロットの

私のコードは次のとおりです。

UI:

library(dygraphs) 
shinyUI(fluidPage(
titlePanel("Simple example"), 
sidebarLayout(
    sidebarPanel(), 
    mainPanel(
    fluidRow(column(10, uiOutput("graphs")), 
      column(2, uiOutput("legends"))) 
    ) 
) 
)) 

がサーバ:

library(dygraphs) 
library(xts) 

shinyServer(function(input, output, session) { 

# load xts sample data 
data("sample_matrix") 
sample.xts <- as.xts(sample_matrix) 

output$graphs <- renderUI({ 
plot_output_list <- lapply(1:3, function(i) { 
    dygraphOutput(paste0('div_graph_', i)) 
}) 
}) 

output$legends <- renderUI({ 
legend_output_list <- lapply(1:3, function(i) { 
    htmlOutput(paste0("div_legende",i), height = "400px") 
}) 
}) 

# do the plotting 
lapply(1:3, function(i) { 
    output[[paste0('div_graph_', i)]] <- renderDygraph({ 
    dygraph(sample.xts[,i],main=i)%>% 
    dyLegend(labelsDiv = paste0("div_legende",i), show = "always") 
    }) 
}) 
}) 

これは、あなたがすべての3つのプロットの伝説を直接貼り合わせる見ることができ、このプロットにつながります。私は彼らにそれぞれのプロットの権利があることを望みます。

sample plot with legend

答えて

0

私はそれを得ました。 plotOutputを作成して、空のplotを作成すると、このトリックは実行されます。

Uiはそのままです。 サーバー:

library(dygraphs) 
library(xts) 

shinyServer(function(input, output, session) { 

data("sample_matrix") 
sample.xts <- as.xts(sample_matrix) 

output$graphs <- renderUI({ 
    plot_output_list <- lapply(1:3, function(i) { 
    dygraphOutput(paste0('div_graph_', i)) 
}) 
}) 

output$legends <- renderUI({ 
legend_output_list <- lapply(1:3, function(i) { 
    plotOutput(paste0("div_legende",i), height = "400px") 
}) 
}) 

lapply(1:3, function(i) { 
    output[[paste("div_legende",i)]] <- renderPlot(
    plot(1,1,type="n",xaxt="n",yaxt="n",ylab="",xlab="",bty="n"), 
    height = "400px" 
) 
    output[[paste0('div_graph_', i)]] <- renderDygraph({ 
    dygraph(sample.xts[,i],main=i)%>% 
    dyLegend(labelsDiv = paste0("div_legende",i), 
      show = "always") 
    }) 
}) 
}) 
関連する問題