2015-12-18 4 views
0

Я делаю баррель с plotly на основе World Phones example.R: плоский и блестящий штрих-код

Боковая панельPanel не работает, можете ли вы сказать мне, почему?

data <- data.frame(x=rep(c('A','B','C'), each = 1, times = 3), 
        y=runif(9, 5, 10), 
        group=rep(c('2011','2012','2013'), each = 1, times= 3)) 

ui.R:

library(shiny) 
library(plotly) 
# Define the overall UI 
shinyUI(
# Use a fluid Bootstrap layout 
fluidPage( 
# Give the page a title 
titlePanel("Barchart"), 
# Generate a row with a sidebar 
sidebarLayout(  
# Define the sidebar with one input 
sidebarPanel(
selectInput("letter", "Letter:", levels(data[,1])), 
hr()), 
# Create a spot for the barplot 
mainPanel(
plotlyOutput("dataPlot") 
)))) 

server.R:

library(shiny) 
library(plotly) 
shinyServer(function(input, output) { 
# Fill in the spot we created for a plot 
output$dataPlot <- renderPlotly({ 
# Render a barplot 
p <- plot_ly(data, x = input$letter, y=y, group=group,type = "bar") 
p}) 
}) 
+0

'вход $ letter' вернуться к вам' A' и у вас нет колунда 'A' ​​в ваших данных – Batanichek

ответ

1

Я не могу полностью understan что вы wnat увидеть

, но если вы хотите построить только одна буква по годам

1) У вас есть плохой df как пример - A существуют только в 2011 году

2) Я использую data <- data.frame(x=rep(c('A','B','C'), each = 1, times = 3), y=runif(9, 5, 10), group=rep(c('2011','2012','2013'), each = 3, times= 1))

3) попробовать p <- plot_ly(data[data$x==input$letter,], x=group, y=y,type = "bar")

Не забудьте объявить data в ui и server

И работайте только в браузере, а не в rstudion viewer (для меня)

+0

С вашим« df »и модификацией от [Dinesh] (http://stackoverflow.com/users/3854751/dinesh) это работает для меня. Но я забываю объявить «данные» в «iu» или «server»? – Valtyr

+0

вопрос? Я не знаю, где вы создаете df .. но если вы создаете его только в 'ui', приложение не работает, потому что вы havent df на' server' (и иначе). если вы хотите использовать данные (например, из sql), лучше создать 'uioutput' и 'rederUI'' selectInput (" letter "' на стороне сервера – Batanichek

3

Все, что дается Batanicheck i Правильно, но небольшая модификация сюжета получит ваш точный результат.

Заменить

> p <- plot_ly(data[data$x==input$letter,], x=group, y=y,type = "bar") 

С

> p <- plot_ly(data[data$x==input$letter,], x=x, y=y, group=group,type = "bar") 

Для меня он работает в браузере, а также просмотра Rstudio ...