我有一个函数,我只想绘制x
和y
。z
应该表示为一种颜色。有没有适合我的包?
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
。也许有一个更具体的包用于这种用途?
我有一个函数,我只想绘制x
和y
。z
应该表示为一种颜色。有没有适合我的包?
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
。也许有一个更具体的包用于这种用途?
像这样的东西?
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
,其中包含三列 、x
和y
,z
以及 x 和 y 的每个组合的一行(这是 ggplot 所需的格式)。
然后我们创建地图图层。首先是地图本身,使用ggmap(...)
; 然后根据 z 的值“填充”一层瓷砖,使用geom_tile(...)
; 然后是一组使用 z 值着色的等高线,使用stat_contour(geom="path",...)
. 其余代码设置填充和线条颜色并渲染地图。
纯粹主义者会告诉您,您可以直接使用 来渲染填充的轮廓stat_contour(geom="polygon",...)
,而不是使用平铺,但这会产生剪裁未完全封闭在绘图区域中的任何轮廓的不幸效果。