R 中的交互式 Chloropeth 选举团地图

蒂夫

我希望复制其中一张地图,您可以在其中猜测下一次总统选举的州级结果,并通过更改颜色背景向您展示您的场景结果。我的意思的一个例子可以在这里找到

第一步是提供默认设置作为用户输入的起点。实现这一目标的一种方法是:

library(maps)
library(tidyverse)

usa <- map_data("state")
probs <- c(0.30,0.40,0.30)  
results <- c("Rep", "Dem", "Toss-Up")


usa %>%
  group_by(region) %>%
  mutate(result = sample(results, size = n(), prob = probs, replace = T)) > electoral_map

ggplot() + 
  geom_map(data = electoral_map, map = usa, aes(long, lat, map_id = region,
                                            fill = result), color = "black") +
  scale_fill_manual(values=c("blue", "red", "grey"))

在此处输入图片说明

下一步 - 也是最关键的 - 步骤是通过result单击按钮更改列来使此地图具有交互性例如,单击 California 会将填充颜色切换为蓝色,将result编码切换为Dem

对我来说,明显的候选者是plotlyleaflet包,但它们似乎都没有提供我在这种情况下所需的功能。我使用 中的selectFeatures函数获得了最接近的结果mapedit,但这只能让我选择区域,而不是更改它们的相关编码。

对于后续计算,重要的是记录用户所做的更改以供进一步使用。最终目标是拥有类似于上面提供的链接的闪亮应用程序,用户的输入改变了每一方保护的选举团投票总数。

有没有人对可能的解决方案有任何指示?

(为了记录,我的实际目标与选举无关,但我认为这是传达我的问题最容易理解的方式)

威策314

我为您制作了一个简单的闪亮应用程序,作为您项目的起点。

您可以在以下位置进行测试:https : //wietze314.shinyapps.io/stackoverflow-rig-the-election/

#
# This is a Shiny web application. You can run the application by clicking
# the 'Run App' button above.
#
# Find out more about building applications with Shiny here:
#
#    http://shiny.rstudio.com/
#

library(shiny)
library(maps)
library(ggplot2)
library(dplyr)
library(sp)

# Define UI for application that draws a map
ui <- fluidPage(

  # Application title
  titlePanel("Rig the election of the USA"),

  # Show a plot of the generated distribution
  mainPanel(
    plotOutput("usaPlot", click = "usaPlot_click"),
    textOutput("debug")
  )
)

usa <- map_data("state")
probs <- c(0.30,0.40,0.30)  
results <- c("Rep", "Dem", "Toss-Up")

start_map <- usa



# Define server logic required to change the election results
server <- function(input, output) {

  # make a variable to store the election results in  
  electoral_map <- reactiveValues( 
    regions = start_map %>% select(region) %>%
      distinct() %>% mutate(result = sample(results, size = n(), prob = probs, replace = T))
  )

  # render the map  
  output$usaPlot <- renderPlot({
    # generate bins based on input$bins from ui.R

    ggplot() + 
      geom_map(data = start_map %>% inner_join(electoral_map$regions, by = 'region'), 
               map = usa, 
               aes(long, lat, map_id = region, fill = result), color = "black") +
      scale_fill_manual(values=c("blue", "red", "grey"))

  })

  # find the region that was clicked (point.in.polygon)
  # change the result of the election

  observeEvent(input$usaPlot_click,{

    x <- input$usaPlot_click$x
    y <- input$usaPlot_click$y

    selectedregion <- usa %>%
      group_by(region) %>%
      mutate(selected = point.in.polygon( x,y,long,lat)) %>%
      filter(selected == 1) %>% 
      select(region) %>% distinct() %>% unlist()

    if(length(selectedregion)==1){
      currentresult <- electoral_map$regions[electoral_map$regions == selectedregion,'result']

      nextresult <- if_else(currentresult == "Dem","Rep","Dem")
      electoral_map$regions[electoral_map$regions == selectedregion,'result'] <- nextresult

      # report what you have done
      output$debug <- renderText(paste0("You visited at ",
                                        round(x),", ",round(y),
                                        " and rigged the election results of ",selectedregion, " and changed it to ",
                                        nextresult))
    } else {
      # if no region has been selected
      output$debug <- renderText("Fish don't vote!!!")
    }

  })


}



# Run the application 
shinyApp(ui = ui, server = server)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用传单/光泽的R中的交互式地图

来自分类Dev

R:制作可导出为 HTML 的交互式地图

来自分类Dev

R Shiny中的交互式ZoomGraph

来自分类Dev

R中的Chloropeth贴图无法解决,我认为问题在于合并数据

来自分类Dev

单击R Shiny中的交互式图

来自分类Dev

R 数据表中的交互式突出显示

来自分类Dev

在 R 中创建交互式绘图

来自分类Dev

交互式地图中的地图错误

来自分类Dev

从交互式地图中抓取数据

来自分类Dev

从SVG交互式地图获取链接

来自分类Dev

交互式(可点击)地图

来自分类Dev

如何在R中的交互式图形中以对数标度绘制轮廓?

来自分类Dev

R中的`Rmd`文件中的`for`循环内部未绘制交互式`ggplotly`图

来自分类Dev

如何使用Leaflet在R中创建GTFS数据的交互式图?

来自分类Dev

R中的交互式散点图,叠加/悬停摘要/工具提示作为用户提供的图函数

来自分类Dev

在R中的交互式3维图形上绘制趋势线(不是平面或平滑表面)

来自分类Dev

使用R交互式更改Plotly图像中的轴比例(线性/对数)

来自分类Dev

在交互式R会话中从闪亮的应用程序返回值

来自分类Dev

如何在 R Markdown Shiny 文档中制作交互式图表?

来自分类Dev

LeafletR可变点大小的交互式地图

来自分类Dev

在交互式地图上覆盖shapefile或栅格

来自分类Dev

交互式Google地图在C#Winform上

来自分类Dev

从交互式地图中收集数据

来自分类Dev

带有小叶和光泽的交互式Choropleth地图

来自分类Dev

使用C#构建交互式地图

来自分类Dev

带有交互式CSS的Adobe Illustrator SVG地图

来自分类Dev

交互式地理地图的网络技术栈?

来自分类Dev

无法在交互式 highchart choropleth 地图中显示颜色

来自分类Dev

从在线交互式地图中抓取底层数据

Related 相关文章

  1. 1

    使用传单/光泽的R中的交互式地图

  2. 2

    R:制作可导出为 HTML 的交互式地图

  3. 3

    R Shiny中的交互式ZoomGraph

  4. 4

    R中的Chloropeth贴图无法解决,我认为问题在于合并数据

  5. 5

    单击R Shiny中的交互式图

  6. 6

    R 数据表中的交互式突出显示

  7. 7

    在 R 中创建交互式绘图

  8. 8

    交互式地图中的地图错误

  9. 9

    从交互式地图中抓取数据

  10. 10

    从SVG交互式地图获取链接

  11. 11

    交互式(可点击)地图

  12. 12

    如何在R中的交互式图形中以对数标度绘制轮廓?

  13. 13

    R中的`Rmd`文件中的`for`循环内部未绘制交互式`ggplotly`图

  14. 14

    如何使用Leaflet在R中创建GTFS数据的交互式图?

  15. 15

    R中的交互式散点图,叠加/悬停摘要/工具提示作为用户提供的图函数

  16. 16

    在R中的交互式3维图形上绘制趋势线(不是平面或平滑表面)

  17. 17

    使用R交互式更改Plotly图像中的轴比例(线性/对数)

  18. 18

    在交互式R会话中从闪亮的应用程序返回值

  19. 19

    如何在 R Markdown Shiny 文档中制作交互式图表?

  20. 20

    LeafletR可变点大小的交互式地图

  21. 21

    在交互式地图上覆盖shapefile或栅格

  22. 22

    交互式Google地图在C#Winform上

  23. 23

    从交互式地图中收集数据

  24. 24

    带有小叶和光泽的交互式Choropleth地图

  25. 25

    使用C#构建交互式地图

  26. 26

    带有交互式CSS的Adobe Illustrator SVG地图

  27. 27

    交互式地理地图的网络技术栈?

  28. 28

    无法在交互式 highchart choropleth 地图中显示颜色

  29. 29

    从在线交互式地图中抓取底层数据

热门标签

归档