geom_map" map_id"功能工作?

时间:2016-06-19 22:22:15

标签: r ggplot2

我试图理解ggplot2中public boolean GameBoardOnDragListenerSwitchMethod(DragEvent myDrag, View myV, int dragListenerValue){ switch (myDrag.getAction()) { case DragEvent.ACTION_DRAG_STARTED: if (myDrag.getClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) { myV.invalidate(); return true; } return true; case DragEvent.ACTION_DRAG_ENTERED: gameImages[dragListenerValue].setBackgroundColor(Color.BLUE); gameImages[dragListenerValue].setPadding(5, 5, 5, 5); return true; case DragEvent.ACTION_DRAG_LOCATION: return true; case DragEvent.ACTION_DRAG_EXITED: gameImages[dragListenerValue].setBackgroundColor(0); gameImages[dragListenerValue].setPadding(0, 0, 0, 0); return true; case DragEvent.ACTION_DROP: DragEvent myEvent = myDrag; getGameImages(myEvent, dragListenerValue); return true; case DragEvent.ACTION_DRAG_ENDED: return true; // An unknown action type was received. default: Log.e("DragDrop Example", "Unknown action type received by OnDragListener."); break; } return true; } 的用法。

设定:

geom_map

为什么这段代码:

library(ggplot2)
library(maps)
county2 <- map_data("county")

制作正确的情节: enter image description here

但是将ggplot() + geom_map(data=county2, map=county2, aes(x=long, y=lat, map_id=region), col="white", fill="grey") 更改为map_id=region会这样做吗?

map_id=subregion

enter image description here

1 个答案:

答案 0 :(得分:11)

geom_map()可以为您记住数据框中的多边形。

Alex 正确,map必须看起来像一个强化的空间物体。那就是“记住”。 map_id可以是包含其他图层标识符的任何列。

您对geom_map()的第一次调用应该(通常)是“基础层”,类似于您使用全面的GIS程序所做的,它具有多边形轮廓并且可能是基本填充。 / p>

geom_map()的其他调用可以添加其他美学效果(包括其他shapefile)。

以下是一些示例。

library(ggplot2)
library(maptools)
library(mapdata)
library(ggthemes)
library(tibble)
library(viridis)

us <- map_data("state")

choro_dat <- data_frame(some_other_name=unique(us$region),
                        some_critical_value=sample(10000, length(some_other_name)))

gg <- ggplot()
gg <- gg + geom_map(data=us, map=us,
                    aes(long, lat, map_id=region),
                    color="#2b2b2b", fill=NA, size=0.15)
gg <- gg + coord_map("polyconic")
gg <- gg + theme_map()
gg <- gg + theme(plot.margin=margin(20,20,20,20))
gg

enter image description here

county <- map_data("county")

gg <- ggplot()
gg <- gg + geom_map(data=county, map=county,
                    aes(long, lat, map_id=region),
                    color="#2b2b2b", fill=NA, size=0.15)
gg <- gg + coord_map("polyconic")
gg <- gg + theme_map()
gg <- gg + theme(plot.margin=margin(20,20,20,20))
gg

enter image description here

奇怪的县映射的原因是县名不是唯一的。

gg <- ggplot()
gg <- gg + geom_map(data=county, map=county,
                    aes(long, lat, map_id=subregion),
                    color="#2b2b2b", fill=NA, size=0.15)
gg <- gg + coord_map("polyconic")
gg <- gg + theme_map()
gg <- gg + theme(plot.margin=margin(20,20,20,20))
gg

enter image description here

请注意map_id不是regionid但它仍然有效。那个'b / c该列中的值在us$region

gg <- ggplot()
gg <- gg + geom_map(data=us, map=us,
                    aes(long, lat, map_id=region),
                    color="#2b2b2b", fill=NA, size=0.15)
gg <- gg + geom_map(data=choro_dat, map=us,
                    aes(fill=some_critical_value,
                        map_id=some_other_name),
                    color="white", size=0.15)
gg <- gg + scale_fill_viridis(name="Value")
gg <- gg + coord_map("polyconic")
gg <- gg + theme_map()
gg <- gg + theme(plot.margin=margin(20,20,20,20))
gg <- gg + theme(legend.position=c(0.85, 0.2))
gg

enter image description here

请注意,我们可以使用不同的空间对象并围绕地图包裹轮廓:

outline <- map_data("usa")

gg <- gg + geom_map(data=outline, map=outline,
                    aes(long, lat, map_id=region),
                    color="black", fill=NA, size=1)
gg

enter image description here

最后一个:使用三个空间对象叠加在一起的复合材料。请注意,如果您真的想要映射县,因为它具有FIPS代码(即每个县可以映射美学的唯一ID),您可能希望使用类似this的内容。

state <- map_data("state")
county <- map_data("county")
usa <- map_data("usa")

gg <- ggplot()
gg <- gg + geom_map(data=county, map=county,
                    aes(long, lat, map_id=region),
                    color="#2b2b2b", fill=NA, size=0.15)
gg <- gg + geom_map(data=state, map=state,
                    aes(long, lat, map_id=region),
                    color="#2166ac", fill=NA, size=0.5)
gg <- gg + geom_map(data=usa, map=usa,
                    aes(long, lat, map_id=region),
                    color="#4d9221", fill=NA, size=1)
gg <- gg + coord_map("polyconic")
gg <- gg + theme_map()
gg <- gg + theme(plot.margin=margin(20,20,20,20))
gg

enter image description here