【问题标题】:How can I map numeric values to the fill attribute of a map in ggvis?如何将数值映射到 ggvis 中地图的填充属性?
【发布时间】:2016-03-19 20:52:31
【问题描述】:

我正在使用以下代码在ggvis中绘制地图

首先我下载带有坐标的json文件

us <- readOGR("http://eric.clst.org/wupl/Stuff/gz_2010_us_040_00_20m.json", "OGRGeoJSON")

然后我强化数据集

map <- ggplot2::fortify(us)

我创建了一个我想在地图中表示的值的数据集,标准化从 0 到 1:

value <- data_frame(stateName=us$NAME, value=seq(1:52)/52)

最后,我(成功)绘制了我的地图:

tbl_df(map)%>%
  filter(long>-130 & long<0) %>% 
  filter(lat>20) %>% 
  ggvis(~long, ~lat) %>%
  group_by(group, id) %>%
  layer_paths(strokeOpacity:=0.5, stroke:="#7f7f7f", fill:="#cc0000") %>%
  scale_numeric("y", domain=c(24,50)) %>% 
  scale_numeric("x", domain=c(-126,-72)) %>% 
  hide_legend("fill") %>%
  hide_axis("x") %>% 
  hide_axis("y") %>%
  set_options(width=400, height=600, keep_aspect=TRUE)

但是,由于所有过程对我来说有点黑盒,我不知道如何有效地将数据集 value 中的值映射到 ggvis 映射。我想在填充属性上使用颜色渐变,但即使使用透明度也可以。

我想我应该告诉fortify() 保留us$NAME,但是如何?

【问题讨论】:

    标签: r ggplot2 ggvis


    【解决方案1】:

    您是否正在寻找类似的东西:

    us@data$id = rownames(us@data)
    us_class = fortify(us, region="id")
    us.df = join(us_class, us@data, by="id")
    value <- data_frame(NAME=us$NAME, value=seq(1:52)/52)
    us.df <- join(us.df, value)
    
    tbl_df(us.df)%>%
      filter(long>-130 & long<0) %>% 
      filter(lat>20) %>% 
      ggvis(~long, ~lat) %>%
      group_by(group, id) %>%
      layer_paths(strokeOpacity:=0.5, stroke:="#7f7f7f", fill:="#cc0000") %>%
      scale_numeric("y", domain=c(24,50)) %>% 
      scale_numeric("x", domain=c(-126,-72)) %>% 
      hide_legend("fill") %>%
      hide_axis("x") %>% 
      hide_axis("y") %>%
      set_options(width=400, height=600, keep_aspect=TRUE) %>%
      layer_paths(fill= ~value)
    

    【讨论】:

    • 谢谢。第二行检索到这个错误Error: isTRUE(gpclibPermitStatus()) is not TRUE。你知道什么可能导致这个问题吗?另外,我希望颜色会有所不同,因为我将颜色映射到一个没有重复的连续变量。为什么不是这样?
    • 这是我的会话信息:maptools_0.8-36 plyr_1.8.3 rgeos_0.3-11 rgdal_1.0-4 sp_1.2-2 ggplot2_2.1.0 ggvis_0.4.2 dplyr_0.4.3
    • 非常感谢!该错误可能是由于一些过时的软件包造成的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2018-09-15
    • 2015-11-29
    • 1970-01-01
    相关资源
    最近更新 更多