我试图理解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")
但是将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
答案 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
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
奇怪的县映射的原因是县名不是唯一的。
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
请注意map_id
不是region
或id
但它仍然有效。那个'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
请注意,我们可以使用不同的空间对象并围绕地图包裹轮廓:
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
最后一个:使用三个空间对象叠加在一起的复合材料。请注意,如果您真的想要映射县,因为它具有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