如何将数值映射到 ggvis 中地图的填充属性?
How can I map numeric values to the fill attribute of a map in ggvis?
我正在使用以下代码在 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
,但是怎么做呢?
您是否正在寻找类似的东西:
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)
我正在使用以下代码在 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
,但是怎么做呢?
您是否正在寻找类似的东西:
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)