如果频率小于给定数字,则以图形方式显示文本

时间:2017-07-31 14:20:51

标签: r plotly shiny

我正在开发一款闪亮的应用,该应用的一部分会显示一个阴谋饼图

如果饼图中的值小于特定数字,是否可以显示文本而不是饼图

我能想到的是使用ifelse,但我不认为这是一种可行的方法

 output$plot<-renderPlotly({
      plot_ly(selection, labels = ~Country, values = ~Freq, type = 'pie') %>%
        layout(title = paste0("Percentage of patients from"," ",selection$Country[selection$Country!='Rest of the countries']," ","v/s rest of the countries"),
               xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
               yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
    })

数据框

Country Freq    lon        lat          total              q

India   4   78.96288    20.593684   299 1st Quantile(1-50 occurances
Rest of the countries   295 y   y   299 y

1 个答案:

答案 0 :(得分:1)

这是一种方法:

library(shiny)
library(plotly)
shinyApp(
  ui = fluidPage(selectInput("select","Select:", choices=unique(mtcars$cyl), selected = c(6)),
                 uiOutput("plot1")),
  server = function(input, output) {
    data <- reactive({
      data <- mtcars[mtcars$cyl %in% input$select,]
    })
 output$plot1 <- renderUI({
   if(input$select < 6){
     print("Error")
   }else{
     plotlyOutput("plot2")
   }

 })

 output$plot2 <- renderPlotly({
   plot_ly(data(), x = ~mpg, y = ~hp, color = ~cyl)
 })

  }
)

我刚刚使用了来自plotly包(散点图)和mtcars数据集的其他绘图类型,因为您没有提供可重现的示例,也没有提供数据。然而,主要概念是相同的,并且应该没有任何区别:我使用renderUI表示if...else...语句,如果cyl小于6,则打印错误,否则渲染图。

在你的情况下,而不是input$select,你应该使用决定性的价值,如果我理解正确,那就是Freq。