2015-12-04 2 views
2

Я использую пакет plotly для создания двух сюжетов в стиле их интеграции ggplotly на основе входных данных пользователя. пользователь обращается к каждому сюжету с помощью выбора панели табуляции. К сожалению, при тестировании я не смог использовать пакет plotly для создания обоих графиков, не приводя к сбою моего экземпляра R.Использование 2 отдельных сюжетных (или ggplotly) участков в tabsetPanel в блестящем приложении

UI with normal ggplot2 functionality

вот данные, как предложенные замечания:

generationData = read.csv("data/statedata.csv", #"https://docs.google.com/spreadsheets/d/1ZbDI31sSKatBoEVKo70TV_A4VwCBHK4pIoCWXB7yfx0/pub?gid=192701245&single=true&output=csv", 
         header = TRUE) #read csv file 
generationDataCleaned = generationData[!(is.null(generationData$Name) | generationData$Name==""), ] 

statenames = as.character(generationDataCleaned$Name) 
row.names(generationDataCleaned) = statenames 

result() является реактивная функция для вычисления кадра данных результата, что сюжет использует

result <- reactive({ 
state = input$stateInput 
pctCoal = input$Coal/100 
if(state == "") { 
    #handle onload 
    print("it was blank!") 
    state = "Alabama" 
    pctCoal = 15/100 
    } 
    baseCoal_Energy = generationDataCleaned[state, "Coal.Steam.Electric.Generation..MWh."] 
    baseNGCC_Energy = generationDataCleaned[state, "NGCC.Electric.Generation..MWh."] 

totalEnergy = sum(baseCoal_Energy, 
        baseNGCC_Energy 
) 
baseEnergy = totalEnergy 

coalEnergy_Reduction = (pctCoal) * baseCoal_Energy 

newCoal_Energy = (1 - pctCoal) * baseCoal_Energy 
newNGCC_Energy = baseNGCC_Energy + coalEnergy_Reduction 

newEnergy = newCoal_Energy + newNGCC_Energy 
Energy_Frame <- c(baseEnergy, newEnergy) 

#Emissions Rate 
baseCoal_CO2_Rate = generationDataCleaned[state, "Coal.Steam.Emission.Rate..lb.MWh."] 
baseNGCC_CO2_Rate = generationDataCleaned[state, "NGCC.Emission.Rate..lb.MWh."] 

totalCO2_Rate = sum(baseCoal_CO2_Rate, 
        baseNGCC_CO2_Rate 
        ) 
baseCO2_Rate = totalCO2_Rate 

coalCO2_Rate_Reduction = (pctCoal) * baseCoal_CO2_Rate 

newCoal_CO2_Rate = (1 - pctCoal) * baseCoal_CO2_Rate 

newNGCC_CO2_Rate = baseNGCC_CO2_Rate + coalEnergy_Reduction * baseNGCC_CO2_Rate/baseNGCC_Energy 

newCO2_Rate = newCoal_CO2_Rate + newNGCC_CO2_Rate 

CO2_Rate_Frame <- c(baseCO2_Rate, newCO2_Rate) 

#Emissions Mass 

baseCoal_CO2_Mass = generationDataCleaned[state, "Coal.Steam.Carbon.Dioxide.Emissions..tons."] 
baseNGCC_CO2_Mass = generationDataCleaned[state, "NGCC.Carbon.Dioxide.Emissions..tons."] 


totalCO2_Mass = sum(baseCoal_CO2_Mass, 
        baseNGCC_CO2_Mass 
        ) 
baseCO2_Mass = totalCO2_Mass 

coalCO2_Mass_Reduction = (pctCoal) * baseCoal_CO2_Mass 

newCoal_CO2_Mass = (1 - pctCoal) * baseCoal_CO2_Mass 

newNGCC_CO2_Mass = baseNGCC_CO2_Mass + coalEnergy_Reduction * baseNGCC_CO2_Mass/baseNGCC_Energy 

newCO2_Mass = newCoal_CO2_Mass + newNGCC_CO2_Mass 

CO2_Mass_Frame <- c(baseCO2_Mass, newCO2_Mass) 

name_Frame <- c("Base", "New") 

result <- data.frame(name_Frame, Energy_Frame, CO2_Rate_Frame, CO2_Mass_Frame) 

colnames(result) <- c("Name", "Energy", "Rate", "Mass") 

result 
}) 

ui.R

column(8, 
     tabsetPanel(type = "tabs", 
        id = "tabset1", 
        tabPanel("Rate", value = "Rate", plotlyOutput("ratePlot")), 
        tabPanel("Mass", value = "Mass", plotlyOutput("massPlot"))#, plotOutput("massPlot")) 
       ) 

server.R

output$ratePlot <- renderPlotly({ 
    gg <- ggplot(result(), aes(x = Name, y = Rate, fill = Name)) + 
    theme_minimal() + 
    geom_bar(stat = "identity") + 
    scale_fill_brewer(type = "qual", palette = 1) 
    #gg 
    p <- ggplotly(gg) 
    p 
}) 

output$massPlot <- renderPlotly({ 
    gg2 <- ggplot(result(), aes(x = Name, y = Mass, fill = Name)) + 
    theme_minimal() + 
    geom_bar(stat = "identity") + 
    scale_fill_brewer(type = "qual", palette = 1) 
    #gg2 
    p2 <- ggplotly(gg2) 
    p2 
}) 

Но когда я только нормальный ggplot2, то tabPanel работает отлично:

ui.R

 tabsetPanel(type = "tabs", 
        id = "tabset1", 
        tabPanel("Rate", value = "Rate", plotOutput("ratePlot")), 
        tabPanel("Mass", value = "Mass", plotOutput("massPlot"))#, plotlyOutput("massPlot")) 
       ) 

server.R

output$ratePlot <- renderPlot({ #ly 
    gg <- ggplot(result(), aes(x = Name, y = Rate, fill = Name)) + 
    theme_minimal() + 
    geom_bar(stat = "identity") + 
    scale_fill_brewer(type = "qual", palette = 1) 
    gg 
    #p <- ggplotly(gg) 
    #p 
}) 

output$massPlot <- renderPlot({ 
    gg2 <- ggplot(result(), aes(x = Name, y = Mass, fill = Name)) + 
    theme_minimal() + 
    geom_bar(stat = "identity") + 
    scale_fill_brewer(type = "qual", palette = 1) 
    gg2 
}) 

Есть ли какая-то функциональность, которую мне нужно изменить?

+0

в вашем первом выходе $ massPlot p2 не печатается – MLavoie

+0

oops, извините, я забыл поместить это на эту строку кода, я отредактирую, чтобы отразить это изменение. –

+0

Мне еще нужно использовать ggplotly с блестящим, но разве вы не должны иметь имя пользователя или пароль для использования замысловатого? – MLavoie

ответ

0

На данный момент, как представляется, нет решения для использования панелей с вкладками с интеграцией ggplot2 в пределах участка (ggplotly()). Работала над этой проблемой, просто используя plotly() для каждого графика между вкладками.

 Смежные вопросы

  • Нет связанных вопросов^_^