2017-10-30 20 views
0
スクリプトを実行してください場合は、それはあなたのplotly Rとで基本的なサンキーチャートやほかのデータテーブルを与える

。また、上には3つのinfoBoxがあります。私はプロットのサンキーラインをクリックすると、私はplotly_clickを使用してデータテーブル内の値を参照してください。私は2番目のインフォボックスで3により、機能私はどのサンキー行をクリックしたときに、それがデータテーブルに「POINTNUMBER」列の値をピックアップして、2で乗算し、最初のインフォボックスに入れて欲しい、とのように第三インフォボックスに4を掛けスナップ付き。ありがとう、助けてください。 event_data()を考慮Rでplotly_clickとを使用して複数のインフォボックスの更新plotly

## app.R ## 
library(shiny) 
library(shinydashboard) 
library(devtools) 
library(ggplot2) 
library(plotly) 
library(proto) 
library(RColorBrewer) 
library(gapminder) 
library(stringr) 
library(broom) 
library(mnormt) 
library(DT) 

ui <- dashboardPage(
dashboardHeader(title = "Multiple hover"), 
dashboardSidebar(
width = 0 
), 
dashboardBody(

infoBox("Multiply by 2", 2 * 2, icon = icon("credit-card")), 
infoBox("Multiply by 3", 2 * 3, icon = icon("credit-card")), 
infoBox("Multiply by 4", 2 * 4, icon = icon("credit-card")), 
tags$br(), 

box(title = "Sankey Chart", status = "primary",height = "455" ,solidHeader = 
T, 
plotlyOutput("sankey_plot")), 

box(title = "Case Summary", status = "primary", height = "455",solidHeader 
= T, 
    dataTableOutput("sankey_table")) 
) 
) 
server <- function(input, output) 
{ 
output$sankey_plot <- renderPlotly({ 
trace1 <- list(
    domain = list(
    x = c(0, 1), 
    y = c(0, 1) 
), 
    link = list(
    label = c("Case1", "Case2", "Case3", "Case4", "Case5", "Case6", 
    "Case7"), 
    source = c(0, 1, 2, 3, 4, 5, 6, 7), 
    target = c(11, 12, 7, 10, 13, 9, 8), 
    value = c(5, 6, 2, 4, 10, 6, 2) 
), 
    node = list(label = c("R1", "R2", "R3","R4","R5","R6","R7","Blood 
    Test","Check Out","Discuss Results", 
         "MRI Scan", "Registration", "Triage and Assessment", 
    "X-RAY")), 
    type = "sankey" 
) 
    data <- list(trace1) 
    p <- plot_ly() 
    p <- add_trace(p, domain=trace1$domain, link=trace1$link, 
    node=trace1$node, type=trace1$type) 
    p 
    }) 
    output$sankey_table <- renderDataTable({ 
    d <- event_data("plotly_click") 
    if(is.null(d)) 
    { 
    print("Hello, Please hover to see the result") 
    } else 
    d 
    }) 
    } 
    shinyApp(ui, server) 

Multiple clicks

答えて

0

はデータフレーム、次のコードアクセス特定の値pointNumberを出力し、動的UIをレンダリングします。

コード:

## app.R ## 
library(shiny) 
library(shinydashboard) 
library(devtools) 
library(ggplot2) 
library(plotly) 
library(proto) 
library(RColorBrewer) 
library(gapminder) 
library(stringr) 
library(broom) 
library(mnormt) 
library(DT) 

ui <- dashboardPage(
    dashboardHeader(title = "Multiple hover"), 
    dashboardSidebar(
    width = 0 
), 
    dashboardBody(

    uiOutput('box1'), 
    tags$br(), 

    box(title = "Sankey Chart", status = "primary",height = "455" ,solidHeader = 
      T, 
     plotlyOutput("sankey_plot")), 

    box(title = "Case Summary", status = "primary", height = "455",solidHeader 
     = T, 
     dataTableOutput("sankey_table")) 
) 
) 
server <- function(input, output) 
{ 
    output$sankey_plot <- renderPlotly({ 
    trace1 <- list(
     domain = list(
     x = c(0, 1), 
     y = c(0, 1) 
    ), 
     link = list(
     label = c("Case1", "Case2", "Case3", "Case4", "Case5", "Case6", 
        "Case7"), 
     source = c(0, 1, 2, 3, 4, 5, 6, 7), 
     target = c(11, 12, 7, 10, 13, 9, 8), 
     value = c(5, 6, 2, 4, 10, 6, 2) 
    ), 
     node = list(label = c("R1", "R2", "R3","R4","R5","R6","R7","Blood 
          Test","Check Out","Discuss Results", 
          "MRI Scan", "Registration", "Triage and Assessment", 
          "X-RAY")), 
     type = "sankey" 
    ) 
    data <- list(trace1) 
    p <- plot_ly() 
    p <- add_trace(p, domain=trace1$domain, link=trace1$link, 
        node=trace1$node, type=trace1$type) 
    p 
    }) 
    output$sankey_table <- renderDataTable({ 
    d <- event_data("plotly_click") 
    if(is.null(d)) 
    { 
     print("Hello, Please hover to see the result") 
    } else 
     d 
    }) 

    output$box1 <- renderUI({ 
    tagList(

    infoBox("Multiply by 2", event_data("plotly_click")$pointNumber * 2, icon = icon("credit-card")), 
    infoBox("Multiply by 3", event_data("plotly_click")$pointNumber * 3, icon = icon("credit-card")), 
    infoBox("Multiply by 4", event_data("plotly_click")$pointNumber * 4, icon = icon("credit-card")) 
    ) 


    }) 

} 
shinyApp(ui, server) 

スクリーンショット:

enter image description here

+0

パーフェクト、小さな助け、最初の5サンキーチャートのラインのために、私はラベルを与えたい "秒" KPIボックスに数字以外にも次の2つは「min」というラベルを付けたいと思っています。助けてください。 –

+0

私は私のマシンにアクセスすることはできません。このコードで別の質問として投稿してください。誰かが助けることができた。 – amrrs

+0

親切にここ卿、https://stackoverflow.com/questions/47278387/creating-a-horizo​​ntal-bar-chart-in-r-to-display-sequence-of-activities?noredirect=1#comment81507641_47278387私を助けて –

関連する問題