微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在热图上以闪亮方式显示不同的类别

如何解决在热图上以闪亮方式显示不同的类别

我创建了一个闪亮的应用程序,用户可以在复选框中选择某个值并设置日期范围。 我已经创建了ui,但该图在主要功能中不起作用。

我的闪亮应用程序:

library(ggplot2)
library(ggmap)
library(dplyr)
library(shiny)

bBox = c(left=-95.8,bottom=29.4,right=-95.0,top=30.0)
map <- get_stamenmap(bBox,zoom = 10,source="stamen")

ui <- fluidPage(
  titlePanel("Location"),sidebarPanel('Choose the type of offense to show in plot:',checkBoxGroupInput("offense",label = "Type of offenses...",choices = list("Murder" = 'murder',"Robbery" = 'robbery',"Aggravated assault" = 'aggravated assault',"Burglary" = 'burglary',"Rape" = 'rape'),selected = 'Murder'),daterangeInput("date","Date range:",start  = "2010-01-01",end    = "2010-12-08",min    = "2010-01-01",max    = "2010-12-08",format = "yyyy/mm/dd",separator = " - ")
  ),mainPanel('Performance Plot',plotOutput('myplot')),position = 'left')



server <- function(input,output){
  output$myplot <- renderPlot(
    {
      req(input$type)
      data <- data_4 %>% filter(offense %in% input$offense)
      date <- data_4 %>% filter(offense %in% input$date)
      ggmap(map) + stat_density2d(data = subset(data,offense == "offense" & date == "date"),aes(x = lon,y = lat,fill = ..level..,alpha = ..level..),geom = 'polygon') +
        scale_fill_gradient(low = "green",high = "red") +
        scale_alpha_continuous(range = c(0,0.8)) +
        geom_point(data = subset(data,offense == input$offense),y = lat),size = 0.5) + 
        guides(fill = FALSE,alpha = FALSE) +
        ggtitle('Crime ')
      
    }
  )
  
}
shinyApp(ui = ui,server = server)

我不确定哪里出了问题,但我想的是服务器功能内的ggplot。我能够在闪亮的外部创建情节。但不确定如何整理日期范围和复选框选项。 有人可以帮忙吗?我想在主面板内创建多个图,因为用户可以从复选框中选择多个值。但是我不知道应该将grid.arrange函数放在哪里。

解决方法

您的代码有几个问题:

  1. 您使用的req(input$type)应该是req(input$offense)。这就是为什么在运行代码时未显示任何图(或没有错误消息)的原因

  2. 第二个问题是数据过滤。 Noz可以确定您的想法...但是可以使用subset(data_4,offense %in% input$offense & date >= input$date[[1]] & date <= input$date[[2]])

    过滤数据

完整的可复制示例

library(ggplot2)
library(ggmap)
library(dplyr)
library(shiny)

bbox = c(left=-95.8,bottom=29.4,right=-95.0,top=30.0)
map <- get_stamenmap(bbox,zoom = 10,source="stamen")

ui <- fluidPage(
  titlePanel("Crime Location"),sidebarPanel('Choose the type of offense to show in plot:',checkboxGroupInput("offense",label = "Type of offenses...",choices = list("Murder" = 'murder',"Robbery" = 'robbery',"Aggravated assault" = 'aggravated assault',"Burglary" = 'burglary',"Rape" = 'rape'),selected = 'Murder'),dateRangeInput("date","Date range:",start  = "2010-01-01",end    = "2010-12-08",min    = "2010-01-01",max    = "2010-12-08",format = "yyyy/mm/dd",separator = " - ")
  ),mainPanel('Performance Plot',plotOutput('myplot')),position = 'left'
)


server <- function(input,output){
  output$myplot <- renderPlot(
    {
      req(input$offense)

      ggmap(map) + stat_density2d(data = subset(data_4,offense %in% input$offense & date >= input$date[[1]] & date <= input$date[[2]]),aes(x = lon,y = lat,fill = ..level..,alpha = ..level..),geom = 'polygon') +
        scale_fill_gradient(low = "green",high = "red") +
        scale_alpha_continuous(range = c(0,0.8)) +
        geom_point(data = subset(data_4,offense %in% input$offense),y = lat),size = 0.5) + 
        guides(fill = FALSE,alpha = FALSE) +
        ggtitle('Crime in Houston TX')
      
    }
  )
  
}
shinyApp(ui = ui,server = server)

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。