How to disable unnecessary tabs in plotly and have selectInput "All" option

How can we disable few tabs such as collaborate and logo options in plotly because
End user would not use them anyway and leads to developer website which is nothing to do for them.
Please find the screenshot

How can we have select All in the selectInput option just like here
for facet column, it has None.
selectInput('facet_col', 'Facet Column', c(None = '.', nms))

Hard coding ifelse block is just consuming overhead

library(shiny)
library(plotly)

data(diamonds, package = "ggplot2")
nms <- names(diamonds)

ui <- fluidPage(
  
  headerPanel("Diamonds Explorer"),
  sidebarPanel(
    sliderInput('sampleSize', 'Sample Size', min = 1, max = nrow(diamonds),
                value = 1000, step = 500, round = 0),
    selectInput('x', 'X', choices = nms, selected = "carat"),
    selectInput('y', 'Y', choices = nms, selected = "price"),
    selectInput('color', 'Color', choices = nms, selected = "clarity"),
    
    selectInput('facet_row', 'Facet Row', c(None = '.', nms), selected = "clarity"),
    selectInput('facet_col', 'Facet Column', c(None = '.', nms)),
    sliderInput('plotHeight', 'Height of plot (in pixels)', 
                min = 100, max = 2000, value = 1000)
  ),
  mainPanel(
    plotlyOutput('trendPlot', height = "900px")
  )
)

server <- function(input, output) {
  
  #add reactive data information. Dataset = built in diamonds data
  dataset <- reactive({
    diamonds[sample(nrow(diamonds), input$sampleSize),]
  })
  
  output$trendPlot <- renderPlotly({
    
    # build graph with ggplot syntax
    p <- ggplot(dataset(), aes_string(x = input$x, y = input$y, color = input$color)) + 
      geom_point()
    
    # if at least one facet column/row is specified, add it
    facets <- paste(input$facet_row, '~', input$facet_col)
    if (facets != '. ~ .') p <- p + facet_grid(facets)
    
    ggplotly(p) %>% 
      layout(height = input$plotHeight, autosize=TRUE) %>% 
      layout(plot_bgcolor='rgb(255, 255, 255)') %>% 
      layout(paper_bgcolor='rgb(255, 255, 255)') 
    
  })
  
}

shinyApp(ui, server)

This blog
http://www.somesolvedproblems.com/2018/10/how-to-customize-plotlys-modebar.html
seems to describe how to do what you want from javascript. I could not find any way to access modeBarButtons from R, though I am not very familiar with Plotly, so there may be a way. Perhaps you would have to code the process in javascript, which I cannot help you with.

1 Like

Thanks for blog suggestion. Plotly and JS is also new to me.

But can you please help me with selectInput ? How can we have "select all" option without hard coding them.

I am not sure how best to implement a Select All. My first idea is to do the following.

selectInput('facet_col', 'Facet Column', c(None = '.', nms, All = "All"))
.
.
.
 # if at least one facet column/row is specified, add it
    if (input$facet_col == "All") {
      #Exclude rows used for x, y, color, facet_row
      Avail_col <- nms[!nms %in% c(input$x, input$y, input$color, input$facet_row)]
      F_col <- paste(Avail_col, collapse = "+")
    } else {
      F_col <- input$facet_col
    }
    
    if (input$facet_row == "All") {
      Avail_row <- nms[!nms %in% c(input$x, input$y, input$color, input$facet_col)]
      F_row <- paste(Avail_row, collapse = "+")
    } else {
      F_row <- input$facet_row
    }
    
    facets <- paste(F_row, '~', F_col)
    if (facets != '. ~ .') p <- p + facet_grid(facets)
1 Like

Thanks for the idea. Was wondering if it is necessary to hard code like this.

This topic was automatically closed 54 days after the last reply. New replies are no longer allowed.