簡體   English   中英

使用 shiny 在 R-markdown 中創建動態圖

[英]Creating dynamic plots in R-markdown with shiny

我正在嘗試在 RStudio 中使用閃亮的動態圖創建 RMarkdown。 我的描述銷售點交易的數據如下所示:

Date|Time|Timestamp|CustomerID|Amount|City
11-Nov-15,0:00:59,11/11/15 00:00:59,6350000476,214584,City A
11-Nov-15,0:00:59,11/11/15 00:01:00,7800004763,165,City B
11-Nov-15,0:01:00,11/11/15 00:01:01,4547000063,65132,City C
11-Nov-15,0:01:01,11/11/15 00:01:34,6350000476,4676,City C
11-Nov-15,0:01:34,11/11/15 00:01:36,4657000063,16556,City A
11-Nov-15,0:01:36,11/11/15 00:02:55,7800009476,684,City A

該數據集大約有 250,000 行。

我有一個列表,其中包含我打算由讀者從下拉列表中選擇的十個城市,散點圖的x-axisTimestampy-axis軸為Amount 為了在可視化中提供清晰度,我還希望在滑塊上選擇Amount值。

簡而言之,我正在嘗試重新創建在這里找到的內容。

我試過的代碼在這里:

{r, echo=FALSE}
require(ggplot2)

inputPanel(
 selectInput("city_choose", label = "Select city",
              choices = c("City A"="City A","City B"="City B", "City C"="City C",multiple=TRUE ), selected ="City C" ),

 sliderInput("amount_adjust", label = "Amount",min = 0, max = 350000, value = 1, step = 10000)
)

renderPlot({
  ggplot(data=d2, aes(x=timestamp,y=amount_adjust,color=city_choose))+ geom_point()
})

問題

  • 我的數據在d2中。 RStudio 無法“找到”它。 我通過在會話開始時使用 RScript 將其手動加載到內存中來解決它,但是有沒有更好的方法來做到這一點?
  • 該圖使用selectInputsliderInput的值,但我不確定如何在繪圖函數中調用它們。 我試過input$city_chooseas.Text(input$city_choose)city_choose 他們都找不到。 我對Amount列有同樣的問題。 如何通過從下拉列表和滑塊中獲取值來繪制圖形,如示例所示?
  • 我也不能使用server.R / ui.R設置。 我想要可以自由共享的 RMarkdown 中的輸出。

好吧,這基本上是可行的,盡管我不確定您想要什么樣的情節。 這是 R-markdown 文件:

---
title: "City Plot"
author: "Someone"
date: "December 24, 2015"
runtime: shiny
output: html_document
---

Test 

```{r,echo=F}
require(ggplot2)
shinyApp(
  ui = fluidPage(
    selectInput("city_choose", label = "Select city",
               choices = c("City A"="City A","City B"="City B", 
                           "City C"="City C",multiple=TRUE ), selected ="City C" ),

    sliderInput("amount_adjust", 
                 label = "Amount",min = 1, max = 10, value = 1, step = 1),
    plotOutput("cityplt")
  ),
  server = function(input, output) {
    set.seed(1234)
    n <- 200
    sdate <- as.POSIXct("2015-11-11 00:00:00",tz="UCT")
    edate <- as.POSIXct("2015-11-11 23:59:59",tz="UCT")
    d3 <- data.frame(
      Timestamp =  as.POSIXct(runif(n,sdate,edate),tz="UCT",origin="1970-01-01"),
      Amount = runif(n,10000,1000000),
      City = sample(c("City A","City B","City C"),n,replace=T)
    )
    d3 <- d3[ order(d3$Timestamp), ]

    output$cityplt <- renderPlot({
      d4 <- d3[ d3$City==input$city_choose, ] 
      d4$AdjAmount <- input$amount_adjust*d4$Amount
      ggplot(data=d4,aes(x=Timestamp,y=AdjAmount)) + 
        geom_bar(stat="Identity") +
        labs(title=input$city_choose)
    })
  },
  options = list(height = 800)
)

```

Finished

產量:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM