Переменная selectInput для влияния на вывод диаграммы - аргумент группы? Желательно использовать высокую выходную мощность [Shiny app] - PullRequest
0 голосов
/ 03 февраля 2020

Я новичок в Shiny и R в целом и застрял в том, как сделать мое приложение более интерактивным. У меня есть другие части работоспособности, однако интерактивность, которой я занимался, просто не дошла и дошла до кирпичной стены.

У меня есть набор данных, который я бы хотел, чтобы пользователь мог просматривать через выбранные выбор групп, это набор наблюдений для данных KeyDates, и для моих целей я бы хотел, чтобы этот график отображался в следующем виде: год / квартал или месяц.

> head(myData)
     KeyDate              Area       SubArea       MetricGroup                            Metric Count Amount Year Quarter MonthNo WeekNo
1 2019-11-30           Billing       Billing Billing Documents            Bill Documents Created     0     NA 2019       1      11     48
2 2019-11-30           Billing       Billing  Billing Outsorts                     Bill Outsorts     0     NA 2019       1      11     48
3 2019-11-30 Device Management Meter Reading     Meter Reading        Implausible Reads Uploaded     0     NA 2019       1      11     48
4 2019-11-30 Device Management Meter Reading     Meter Reading No of Implausible reads - Backlog   847     NA 2019       1      11     48
5 2019-12-01           Billing       Billing Billing Documents            Bill Documents Created     0     NA 2019       2      12     48
6 2019-12-01           Billing       Billing  Billing Outsorts                     Bill Outsorts     0     NA 2019       2      12     48

ui.R

# Load the relevant libraries
library(shiny)
library(highcharter)

# Use a fluid Bootstrap layout
fluidPage(    

  # Give the page a title
  titlePanel("Demo of dynamic chart selection?"),

  # Generate a row with a sidebar
  sidebarLayout(      

    # Define the sidebar with two input variables?
    sidebarPanel(
      selectInput("chartGroup", "Chart Grouping:", 
                  choices=c("Year", "Quarter", "MonthNo")),
      # hr(),
      helpText("How would you like to display the data?"),
      selectInput("chartMetric", "Chart Metric:", 
                  choices=c("Bill Documents Created", "Bill Outsorts", 
                            "Implausible Reads Uploaded", "No of Implausible reads - Backlog")),
      # hr(),
      helpText("Which dimension would you like to view?")      
    ),

    # Create a spot for the barplot
    mainPanel(
      highchartOutput("testPlot")  
    )

  )
)

server.R

# Load the relevant libraries
library(dplyr)
library(highcharter)
library(lubridate)

# This setting may help???
options(stringsAsFactors = FALSE)

# Read in the dataset from csv file
testData <- read.csv("./data/testData.csv", header = TRUE, sep = ",")

# Hack the Date into an actual Date field in R (because I have no idea how else to do it)
tempdate <- as.Date(testData$Date, "%d.%m.%Y")

# Bind the two datsets 
temp_data <- cbind(KeyDate = tempdate, testData)

# Now I have dataset to use for the charting ...
myData <- select(temp_data, -Date)

# Take a peek at the dataset
head(myData)

# Define a server for the Shiny app
function(input, output) {

  # >> Start of testPlot
  output$testPlot <- renderHighchart({

# Show the selection from th UI input
  si_choice <- input$chartGroup
  print(si_choice)
  si_metric <- input$chartMetric
  print(si_metric)

# >> This is where I would like to be able to 'select' what is used for grouping
# >> User could select from Year/Quarter/MonthNo

  # Output the chart using highcharter
  hchart(myData, "column", hcaes(x = KeyDate, y = Count, group = Year)) %>%
    hc_plotOptions(column = list(pointWidth = 10),
                   line   = list(
                     color  = "blue",
                     marker = list(
                       fillColor = "white",
                       lineWidth = 2,
                       lineColor = NULL
                     )
                   ))

  })
# << End of testPlot

}

Может кто-нибудь сказать мне, что я должен сделать, чтобы позволить "group = Year" отвечать на вход пользователя selectinput. "group = input $ chartMetri c" ... используя правильный синтаксис, то есть, чтобы результат, который я ищу, был достигнут?

  # Output the chart using highcharter
  hchart(myData, "column", hcaes(x = KeyDate, y = Count, group = Year)) %>%

Большое спасибо заранее за этот вопрос новичков

1 Ответ

0 голосов
/ 09 марта 2020

Необходим синтаксис: group = !!sym(input$chartGroup)

, который преобразует текст в имя столбца из набора данных

# Output the chart using highcharter hchart(myData, "column", hcaes(x = KeyDate, y = Count, group = !!sym(input$chartGroup))) %>%

...