Tworzę prosty wykres liniowy, który renderuje się poprawnie w Shiny.Zmianę wykresu Y na podstawie selectInput
Dodałem teraz selectInput z nazwami 2 różnych miar, zapisanych tak, jak pojawiają się w moim zbiorze danych. Chciałbym zmienić odpowiednio moją zmienną y.
p <- plot_ly(data = LineChartData(), x= Calendar.Month, y = input$Measure, type = "line", group = Calendar.Year, col = Calendar.Year)
Niestety wykres renderuje tylko z jednym punktem. To nie bierze input $ Measure i znajduje to pole w moim zbiorze danych.
Wiem, że przy użyciu ggplot, przełączałbym moje aes na aes_string. Czy istnieje podobne rozwiązanie w spiskach?
EDIT: oto niektóre powtarzalne kod
oto ui.R złożyć
#ui.R
shinyUI(
fluidPage(
titlePanel("Inbound Intermediary Performance"),
sidebarLayout(
sidebarPanel(
h4("Parameters"),
br(),
selectInput("Measure", "Measure", c("Var1","Var2"))
),
mainPanel(
plotlyOutput("lineChart")
)
)
)
)
server.R
#server.R
library(plotly)
library(shiny)
library(ggplot2)
#Create data
data <- data.frame(Month = c(1,2,3,4,5,6,7,8,9,10,11,12), Var1 = c(36,33,30,27,24,21,18,15,12,9,6,3), Var2 = c(4,8,12,16,20,24,28,32,36,40,44,48))
shinyServer(function(input, output) {
#Create plot
output$lineChart <- renderPlotly({
#using ggplot
p <- ggplot(data=data, aes_string(x='Month', y = input$Measure)) +geom_line(size = 1.5) + theme_minimal()
ggplotly(p)
#Using PLotly
#p <- plot_ly(data = data, x= Month, y = input$Measure, type = "line")
})
})
W powyższym przykładzie, mogę używać kropli do przełącznika między Var1 i Var2. Mój wykres zmienia się odpowiednio. Kod wykorzystuje funkcję ggplot, a funkcja aes_string pobiera dane wejściowe. To jest następnie przekształcane w spisek interaktywny za pomocą funkcji ggplotly.
Czy jest sposób, w jaki mogę to zrobić w sposób natywny ze spiskami?
upewnij jest powtarzalny. – MLavoie
Czy możesz podać działającą małą aplikację i przykładowe dane (oraz kod reaktywny? Nie możesz użyć takiej wartości wejściowej. – Gopala