Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Shiny doesn't display R plotly plot

I'm fairly new to shiny and trying to push over a pie chart made in plotly. Upon clicking runapp the html rendered only contains the Title i.e. "Plotly"

The code is as under

UI

library(shiny)

shinyUI <- fluidPage(  
  titlePanel("Plotly"),
  mainPanel(
  plotOutput("plot2")))

Server

library(shiny)
library(ggplot2)
library(ggthemes)
library(plotly)
library(shiny)
library(ggthemes)
library(RODBC)
library(magrittr)

synddb <- odbcConnect("Syndromic", uid="uname", pwd="pwd", believeNRows=FALSE)
totalcomplaints<-sqlQuery(channel=synddb,query= "select c.siteid,count(c.siteid) number_of_complaints, s.sitefullname from complainttmp c, site s
                          where s.siteid= c.siteid and c.siteid in(1,2,3,4,5,6,7,8, 10,11,19,20)
                          group by c.siteid,s.sitefullname
                          order by c.siteid asc")


shinyServer <- function(input, output) {
  output$plot2 <- renderPloty({
    print(
      plot_ly(totalcomplaints,labels=paste(totalcomplaints$sitefullname,totalcomplaints$siteid,sep = "-"),values = ~number_of_complaints, type = 'pie',
              textposition = 'inside',
              textinfo = 'label+percent+values',
              insidetextfont = list(color = '#FFFFFF'),
              hoverinfo = 'text',
              text = ~paste( number_of_complaints, 'complaints'),
              marker = list(colors = colors,
                            line = list(color = '#000000', width = 1)),
              showlegend = T) %>%
        layout(title = 'Complaints in Percentage',
               xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
               yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)))
  })

}

I do see the plot in the viewer once I run the App but it doesn't appear in the HTML page that it renders.

like image 697
Dollar Vora Avatar asked Apr 21 '17 14:04

Dollar Vora


1 Answers

You are using plotly, so change renderPlot with renderPlotly:

output$plot2 <- renderPlotly({
like image 153
Erdem Akkas Avatar answered Nov 19 '22 14:11

Erdem Akkas