在rGoogleMap上将z绘制为带有R的颜色

时间:2014-06-08 07:41:05

标签: r heatmap rgooglemaps

我有一个功能,我只想绘制xyz应表示为颜色。是否有适合我的工作包?

f = function(a,b){
   dnorm(a^2+b^2)
}


x = seq(-2, 2, 0.1)
y = seq(-2, 2, 0.1)
z = outer(x, y, f)
persp(x, y, z)

我想在使用rGoogleMaps生成的地图上绘制此函数。也许有更具体的包用于此用途?

1 个答案:

答案 0 :(得分:3)

这样的东西?

library(ggmap)         # loads ggplot2 as well
library(RgoogleMaps)   # for getGeoCode
london.center <- getGeoCode("London")
london <- get_map("London", zoom=12)
x    <- seq(-2,2,0.1)
df   <- expand.grid(x=x,y=x)
df$z <- with(df,f(x,y))
df$x <- london.center[2]+df$x/20
df$y <- london.center[1]+df$y/20

ggp <- ggmap(london)+
  geom_tile(data=df,aes(x=x,y=y,fill=z), alpha=0.2)+
  scale_fill_gradientn(guide="none",colours=rev(heat.colors(10)))+
  stat_contour(data=df, aes(x=x, y=y, z=z, color=..level..), geom="path", size=1)+
  scale_color_gradientn(colours=rev(heat.colors(10)))
plot(ggp)

此解决方案使用ggplot。也许其他人会使用RgoogleMaps向您展示如何执行此操作。

基本上,我们使用get_map(...)(这只是GetMap(...)包中RgoogleMaps的包装器)加载地图。

然后我们创建示例数据框df,其中包含三列xyz,以及x和y的每个组合的一行(这是ggplot所需的格式)。

然后我们创建地图图层。首先是地图本身,使用ggmap(...);然后使用geom_tile(...)基于z的值“填充”一层图块;然后使用stat_contour(geom="path",...)使用z的值着色的一组轮廓线。其余代码设置填充和线条颜色并渲染地图。

纯粹主义者会告诉您,您可以使用stat_contour(geom="polygon",...)直接渲染填充的轮廓,而不是使用平铺,但这会导致剪切未完全包含在绘图区域中的任何轮廓的不幸影响。