Intersecting Circles on a Map based on on different categorical variables

怎甘沉沦 提交于 2019-12-11 14:55:27

问题


I am trying to build an app where I show circles that represent the radiuses of workers from certain coordinates. However, I would like to also include categorical variables like the customer that the worker can do and the day of the week in which the work is to be done (So Mon through Fri). I want to show only the circles that have certain combinations on the map when I select them. For instance, if I select Mon and Thr and I also select customer X and Z, I will only see the circles of Mon and Thr and customers X and Z. I am having trouble making those intersections happen in an efficient way.

One way I was thinking about doing this is by finding the combinations between the different variables: So if I have 5 customers * and 5 days of the week then I have 25 different cases. However, I have so many categories under each variable, so my UI will look really bad.

#Show days Monday and Tuesday 

coverage_Monday_XXXXX_Roberts <- coverage_data %>%
  filter(Days == "Monday", Manager == 'XXXXX Roberts')
coverage_Tuesday_XXXXX_Roberts <- coverage_data %>%
  filter(Days == 'Tuesday', Manager == 'XXXXX Roberts')

# 
coverage_Monday_YYYY_Gutierrez <- coverage_data %>%
  filter(Days == "Monday", Manager == 'YYYY Gutierrez')
coverage_Tuesday_YYYY_Gutierrez <- coverage_data %>%
   filter(Days == 'Tuesday', Manager == 'YYYY Gutierrez')


# #Create label for Monday cases

# #Create label for Monday cases
 coverage_Monday_XXXXX_Roberts$label <- paste("<p>", coverage_Monday_XXXXX_Roberts$Inspector.Name, "</p>",
                                "<p>", coverage_Monday_XXXXX_Roberts$Day, " ", coverage_Monday_XXXXX_Roberts$Region, "</p>",
                                "<p>", coverage_Monday_XXXXX_Roberts$City, ", ", coverage_Monday_XXXXX_Roberts$Postcode, "</p>",
                                "<p>", coverage_Monday_XXXXX_Roberts$State, "</p>",
                                "<p>", coverage_Monday_XXXXX_Roberts$Manager, "</p>",
                                "<p>", coverage_Monday_XXXXX_Roberts$Customer, "</p>",
                                "<p>", coverage_Monday_XXXXX_Roberts$Inspector.Skill, "</p>",
                                "<p>", coverage_Monday_XXXXX_Roberts$Days, "</p>",
                                "<p>", coverage_Monday_XXXXX_Roberts$Radius, "</p>",
                                sep="")

# #Create label for Tuesday cases
 coverage_Tuesday_XXXXX_Roberts$label <- paste("<p>", coverage_Tuesday_XXXXX_Roberts$Inspector.Name, "</p>",
                                 "<p>", coverage_Tuesday_XXXXX_Roberts$Day, " ", coverage_Tuesday_XXXXX_Roberts$Region, "</p>",
                                 "<p>", coverage_Tuesday_XXXXX_Roberts$City, ", ", coverage_Tuesday_XXXXX_Roberts$Postcode, "</p>",
                                 "<p>", coverage_Tuesday_XXXXX_Roberts$State, "</p>",
                                 "<p>", coverage_Tuesday_XXXXX_Roberts$Manager, "</p>",
                                 "<p>", coverage_Tuesday_XXXXX_Roberts$Customer, "</p>",
                                 "<p>", coverage_Tuesday_XXXXX_Roberts$Inspector.Skill, "</p>",
                                 "<p>", coverage_Tuesday_XXXXX_Roberts$Days, "</p>",
                                 "<p>", coverage_Tuesday_XXXXX_Roberts$Radius, "</p>",
                                sep="")

 coverage_Monday_YYYY_Gutierrez$label <- paste("<p>", coverage_Monday_YYYY_Gutierrez$Inspector.Name, "</p>",
                                "<p>", coverage_Monday_YYYY_Gutierrez$Day, " ", coverage_Monday_YYYY_Gutierrez$Region, "</p>",
                                "<p>", coverage_Monday_YYYY_Gutierrez$City, ", ", coverage_Monday_YYYY_Gutierrez$Postcode, "</p>",
                                "<p>", coverage_Monday_YYYY_Gutierrez$State, "</p>",
                                "<p>", coverage_Monday_YYYY_Gutierrez$Manager, "</p>",
                                "<p>", coverage_Monday_YYYY_Gutierrez$Customer, "</p>",
                                "<p>", coverage_Monday_YYYY_Gutierrez$Inspector.Skill, "</p>",
                                "<p>", coverage_Monday_YYYY_Gutierrez$Days, "</p>",
                                "<p>", coverage_Monday_YYYY_Gutierrez$Radius, "</p>",
                                sep="")

# Create label for Tuesday cases
 coverage_Tuesday_YYYY_Gutierrez$label <- paste("<p>", coverage_Tuesday_YYYY_Gutierrez$Inspector.Name, "</p>",
                                 "<p>", coverage_Tuesday_YYYY_Gutierrez$Day, " ", coverage_Tuesday_YYYY_Gutierrez$Region, "</p>",
                                 "<p>", coverage_Tuesday_YYYY_Gutierrez$City, ", ", coverage_Tuesday_YYYY_Gutierrez$Postcode, "</p>",
                                 "<p>", coverage_Tuesday_YYYY_Gutierrez$State, "</p>",
                                 "<p>", coverage_Tuesday_YYYY_Gutierrez$Manager, "</p>",
                                 "<p>", coverage_Tuesday_YYYY_Gutierrez$Customer, "</p>",
                                 "<p>", coverage_Tuesday_YYYY_Gutierrez$Inspector.Skill, "</p>",
                                 "<p>", coverage_Tuesday_YYYY_Gutierrez$Days, "</p>",
                                 "<p>", coverage_Tuesday_YYYY_Gutierrez$Radius, "</p>",
                                 sep="")



pal <- colorFactor(
  palette = 'Dark2',
  domain = coverage_data$Inpector.Name
)

map11 <- leaflet(coverage_data) %>%
  setView(lng = -95.7129, lat = 34.0902, zoom = 4.499) %>%
  addProviderTiles(providers$Esri.DeLorme) %>%

  ###### DAYS #######
addCircles(lng = coverage_Monday_XXXXX_Roberts$Longitude,
           lat = coverage_Monday_XXXXX_Roberts$Latitude,
           color = ~pal(coverage_Monday_XXXXX_Roberts$Inspector.Name),
           weight = 1,
           radius = coverage_Monday_XXXXX_Roberts$radius,
           opacity = 0.05,
           label = lapply(coverage_Monday_XXXXX_Roberts$label, HTML),
           fillOpacity = 0.05,
           group = "Monday: XXXXX Roberts") %>%

  addCircles(lng = coverage_Tuesday_XXXXX_Roberts$Longitude,
             lat = coverage_Tuesday_XXXXX_Roberts$Latitude,
             color = ~pal(coverage_Tuesday_XXXXX_Roberts$Inspector.Name),
             weight = 1,
             radius = coverage_Tuesday_XXXXX_Roberts$radius,
             opacity = 0.05,
             fillOpacity = 0.05,
             label = lapply(coverage_Tuesday_XXXXX_Roberts$label, HTML),
             group = "Tuesday: XXXXX Roberts") %>%

  addCircles(lng = coverage_Monday_YYYY_Gutierrez$Longitude,
             lat = coverage_Monday_YYYY_Gutierrez$Latitude,
             color = ~pal(coverage_Monday_YYYY_Gutierrez$Inspector.Name),
             weight = 1,
             radius = coverage_Monday_YYYY_Gutierrez$radius,
             opacity = 0.05,
             label = lapply(coverage_Monday_YYYY_Gutierrez$label, HTML),
             fillOpacity = 0.05,
             group = "Monday: YYYY Gutierrez") %>%

  addCircles(lng = coverage_Tuesday_YYYY_Gutierrez$Longitude,
             lat = coverage_Tuesday_YYYY_Gutierrez$Latitude,
             color = ~pal(coverage_Tuesday_YYYY_Gutierrez$Inspector.Name),
             weight = 1,
             radius = coverage_Tuesday_YYYY_Gutierrez$radius,
             opacity = 0.05,
             fillOpacity = 0.05,
             label = lapply(coverage_Tuesday_YYYY_Gutierrez$label, HTML),
             group = "Tuesday: YYYY_Gutierrez") %>%

  addLayersControl(
    overlayGroups= c("Monday: XXXXX Roberts", "Tuesday: XXXXX Roberts",# "Wednesday: XXXXX Roberts", "Thursday: XXXXX Roberts", "Friday: XXXXX Roberts",
                     "Monday: YYYY Gutierrez", "Tuesday: YYYY Gutierrez"), # "Wednesday: YYYY Gutierrez", "Thursday: YYYY Gutierrez", "Friday: YYYY Gutierrez"),

    options = layersControlOptions(collapsed = FALSE))

map11

Within my app I want to be able to select days say ( Mon and Wed) and the customers (say X, and Z) and thus see the circles of all workers that can do customers X and Z on Mon and Wed.

来源:https://stackoverflow.com/questions/57083026/intersecting-circles-on-a-map-based-on-on-different-categorical-variables

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!