0

我有一个函数,我只想绘制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。也许有一个更具体的包用于这种用途?

4

1 回答 1

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(...); 然后根据 z 的值“填充”一层瓷砖,使用geom_tile(...); 然后是一组使用 z 值着色的等高线,使用stat_contour(geom="path",...). 其余代码设置填充和线条颜色并渲染地图。

纯粹主义者会告诉您,您可以直接使用 来渲染填充的轮廓stat_contour(geom="polygon",...),而不是使用平铺,但这会产生剪裁未完全封闭在绘图区域中的任何轮廓的不幸效果。

于 2014-06-08T17:14:35.773 回答